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

Динамическое планирование заданий в Rails

Я просмотрел несколько библиотек планирования для Rails, и мне бы хотелось, чтобы некоторые из них помогли выбрать один, учитывая, что, похоже, я не отвечаю моим требованиям. Это довольно распространенный прецедент:

У нас есть несколько отчетов, и мы хотим, чтобы пользователи настраивали их, когда им захотелось запланировать, когда и как часто конкретный отчет отправляется им по почте. Пользователи должны иметь возможность просматривать список запланированных отчетов, и они должны иметь возможность отменять или изменять существующие запланированные отчеты. Запланированные задания должны пережить перезагрузки сервера. На данный момент я не беспокоюсь только о выполнении заданий на одном node в кластере серверов rails.

  • Rufus scheduler выглядит неплохо, но мне придется писать код, чтобы сохранить задания и перезапустить их, когда рельсы перезапускаются.
  • Delayed_job имеет дело с настойчивостью, но я не вижу, как запускать задания по регулярному расписанию, за исключением, возможно, перенастройки работы на новое время, когда он запускается
  • resque с resque-scheduler кажется очень но я бы хотел не добавлять redis в наш стек, и я, скорее всего, попытаюсь переопределить некоторый пользовательский интерфейс в рельсах, чтобы пользователи могли добавлять/удалять/управлять заданиями, и было бы здорово, если бы он мог использовать такой же ActiveRecord, как и остальные приложения.
4b9b3361

Ответ 1

Я бы рекомендовал использовать Delayed:: Job для фактических заданий, поскольку он автоматически обрабатывает постоянство для ваших пользователей, и вы можете использовать таблицу delayed_jobs для управления (позволяя пользователям изменять/удалять задания, которые они запускали).

Когда дело доходит до автоматического планирования заданий, вы можете использовать драгоценный камень Clockwork. Он был построен Heroku (если я не ошибаюсь) и, по сути, позволяет вам эмулировать/заменять cron в вашем приложении ruby ​​/rails.

С двумя вышеперечисленными библиотеками у вас есть все ваши базы.

Ответ 2

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

Ответ 3

Моя компания производит CloudQuartz (www.thecloudblocks.com), которая позволяет планировать задания через API и получать обратные вызовы, когда они должны запускаться.

У этого есть веб-интерфейс, чтобы показать вам о рабочих местах, их тренде и их статусе, но этот интерфейс не будет открыт для ваших клиентов, если вы не используете API. Надеюсь, вы сочтете это полезным.