Rails Создание нового потока или фонового процесса

У меня проблема с тайм-аутом, когда я нажимаю ссылку Export to Excel в своем приложении из-за тяжелых транзакций БД. Я хочу изменить эту функцию на фон, чтобы пользователь мог двигаться вперед, пока выполняется фоновый процесс. Я хочу, чтобы когда пользователь нажимал на фоновую ссылку Export to Excel, запускался процесс нового потока, и пользователю отправлялось электронное письмо со ссылкой для загрузки файла. Я хочу знать, как лучше всего достичь этого. Создание нового потока или фонового процесса?

Заранее спасибо


person Salil    schedule 30.01.2012    source источник


Ответы (2)


Вы можете использовать https://github.com/defunkt/resque или https://github.com/collectiveidea/delayed_job.

Вы также можете посмотреть:

http://railscasts.com/episodes/271-resque

http://railscasts.com/episodes/171-delayed-job-revised

http://railscasts.com/episodes/171-delayed-job (старый из выше, но бесплатно - но стоит купить подписку)

person Sławosz    schedule 30.01.2012
comment
также вы можете использовать god со спасением - person Manish Shrivastava; 30.01.2012

Существует три типа очередей сообщений,

  1. Никаких очередей — для фоновой задачи будет запущен новый поток/процесс, например: spawn
  2. Управляется базой данных — соответствующая задача будет храниться в таблице базы данных и будет автоматически удалена по завершении, например: backgroundrb, отложенная работа.
  3. Очереди сообщений — задания, хранящиеся в памяти, например: скворец

Я не использовал resque, но слышал, что его сложно настроить. Помимо запуска задач в фоновом режиме, если вы хотите запускать повторяющиеся задачи через равные промежутки времени, вы можете использовать backgroundrb. В противном случае отложенная работа будет правильным выбором.

person nkm    schedule 30.01.2012