Подтвердить что ты не робот

Лучший текущий метод обработки фоновых задач?

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

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