Лучший текущий метод фоновой задачи рельсов? - PullRequest
12 голосов
/ 14 марта 2012

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

Приложение rails - это в основном интерфейс для настройки, когда и как будут выполняться эти скрипты. Скрипты запускаются, генерируют отчеты и отправляют оповещения по электронной почте. Таким образом, пользователь должен иметь возможность настроить время запуска и частоту динамического запуска этих сценариев. Сами сценарии должны иметь доступ к среде rails, чтобы сохранять полученные отчеты в БД.

Просто пытаюсь найти лучший метод из множества вариантов.

Ответы [ 3 ]

12 голосов
/ 14 марта 2012

Я думаю, что вы ищете систему организации очередей заданий.

Для этого вы либо ищете resque , либо delayed_job .Оба поддерживают планирование задач в какой-то момент в будущем - delayed_job делает это изначально, тогда как у resque есть плагин для него, называемый resque_scheduler .

Вы бы ставили задачи в фоновом режиме с параметрами, которые выукажите, а затем в то время, которое вы выбрали, они будут выполнены.Вы можете настроить повторное выполнение заданий на неопределенное время или фиксированное число раз (по крайней мере, с помощью планировщика заданий, не уверенного в задержке_джоба).

задержка_еджоба проще настроить, поскольку он сохраняет все в базе данных.Resque более надежен, но требует, чтобы у вас был Redis в вашем стеке - но если вы уже сделали это, это почти идеальное решение для вашей проблемы.

12 голосов
/ 28 сентября 2012

Я недавно узнал о Sidekiq , и я думаю, что это действительно здорово.

Также есть RailsCast об этом - Sidekiq .

6 голосов
/ 14 марта 2012

Взгляните на драгоценный камень, когда https://github.com/javan/whenever.

Позволяет планировать такие задачи, как задачи cron.

Очень хорошо работает под Linux, и последний коммит был 14 дней назад. Мой друг использовал его в проекте и был очень доволен.

edit: взгляните на самоцвет delayed_job , это хорошо для выполнения длинных задач в фоновом режиме. Полезно при создании задания cron только для запуска других задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...