Динамическое планирование заданий в Rails - PullRequest
13 голосов
/ 11 августа 2011

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

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

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

Ответы [ 3 ]

7 голосов
/ 11 августа 2011

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

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

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

1 голос
/ 11 августа 2011

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

0 голосов
/ 22 декабря 2011

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

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

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