Регулярные отсроченные работы
-
06-07-2019 - |
Вопрос
Я использую отложенное задание для управления фоновой работой.
Однако у меня есть некоторые задачи, которые необходимо выполнять через регулярные промежутки времени. Например, каждый час, каждый день или каждую неделю.
На данный момент, когда я выполняю задачу, я создаю новую, которая будет выполнена за один день / неделю / месяц.
Однако мне это не очень нравится. Если по какой-либо причине задача не выполнена полностью, мы не создадим следующую и можем потерять выполнение задачи.
Как вы управляете такими вещами (с отложенной работой) в своих приложениях rails, чтобы убедиться, что ваш список обычных задач остается верным?
Решение
Если у вас есть доступ к Cron, я настоятельно рекомендую всякий раз, когда
http://github.com/javan/whenever
Вы указываете, что вы хотите запускать и с какой частотой, в обычном простом ruby, и всякий раз, когда поставляет задачи rake, чтобы преобразовать это в crontab и обновить crontab вашей системы.
Если у вас нет доступа к частым cron (как у меня нет, так как мы на Heroku), тогда DJ - это путь.
У вас есть несколько вариантов.
<Ол>Делай то, что делаешь. Ди-джей будет повторять каждое задание определенное количество раз, так что вы немного снисходительны
Поместите код, который создает следующее задание DJ, в блок обеспечения, чтобы убедиться, что он создается даже после исключения или другого плохого события
Создайте другого диджея, который периодически запускается, проверяет наличие соответствующих диджеев и создает их, если их нет. Конечно, это так же подвержено ошибкам, как и другие варианты, так как монитор и реальный ди-джей работают в одном и том же env, но это что-то.
Другие советы
Есть ли какая-то конкретная причина, по которой вы бы не использовали cron для такого рода вещей? Или, может быть, что-то более рубиновое, например, rufus-scheduler , что довольно простой в использовании и очень надежный. р>
Если вам не нужно ставить в очередь, я думаю, эти инструменты помогут вам.