Регулярные отсроченные работы - PullRequest
7 голосов
/ 28 октября 2009

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

На данный момент, когда я выполняю задачу, я создаю новую, которая будет выполнена за один день / неделю / месяц.

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

Как вы управляете такими вещами (с отложенной работой) в своих приложениях rails, чтобы убедиться, что ваш список обычных задач остается верным?

Ответы [ 2 ]

5 голосов
/ 28 октября 2009

Если у вас есть доступ к Cron, я настоятельно рекомендую всякий раз, когда

http://github.com/javan/whenever

Вы указываете, что вы хотите запускать и с какой частотой, в обычном простом рубине, и всякий раз, когда поставляете задачи rake, чтобы преобразовать это в crontab и обновить crontab вашей системы.

Если у вас нет доступа к частым cron (как у меня нет, так как мы на Heroku), тогда DJ - это путь.

У вас есть пара вариантов.

  1. Делай то, что делаешь. Ди-джей будет повторять каждое задание определенное количество раз, так что вы немного снисходительны

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

  3. Создайте другого диджея, который периодически запускается, проверяет наличие соответствующих диджеев и создает их, если они не существуют. Конечно, это так же подвержено ошибкам, как и другие опции, так как монитор и реальный ди-джей работают в одной и той же среде, но это нечто.

1 голос
/ 28 октября 2009

Есть ли какая-то особая причина, по которой вы бы не использовали cron для такого типа вещей? Или, может быть, что-то более рубиновое, как rufus-scheduler , который довольно прост в использовании и очень надежен.

Если вам не нужно ставить в очередь, я думаю, эти инструменты - лучший способ.

...