2012-08-29 4 views
2

У меня есть файл config/schedule.yml, который имеет cron для повторяющихся заданий в моем приложении. Но я не уверен, где/как инициализировать этот файл? В Resque мы использовали его для инициализации в файле resque.rake.где инициализировать файл sched.yml для планировщика sidekiq

ответ

3

Sidekiq на самом деле не предназначен для постоянных рабочих мест. Цитируя sidekiq github wiki page:

Для повторяющихся задач, я рекомендую использовать часовой механизм или всякий раз, когда драгоценные камни, которые интегрируют с хронами вашей системы для планирования задач.

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

Мы долго переключались на whenever, для которого весело писать повторяющиеся задания и которые заботятся обо всех hassels при добавлении cronjobs в вашу систему.

Если вы действительно хотите более простое решение, и нет необходимости для надежного исполнения rufus_scheduler вариант

+0

Пожалуйста, обратите внимание, cronjobs/всякий раз, когда запускается новый рельсы окр при исполнении, это может быть unafforadble во многих системах Prod. – laffuste

+1

Это верно, если вы используете, например, каждый раз, когда бегун (который может использовать модель рельсов напрямую). Разумеется, это удобство связано с накладными расходами на загрузку рельсовой среды (как в противном случае модель узнает обо всем, что ее окружает :). В общем, для повторяющихся задач, которые нужно выполнять чаще, вы можете писать рейк-задачи или даже простые сценарии оболочки, которые добавляются к вашей конфигурации каждый раз. Я думаю, что если вы запускаете задания больше, чем пару раз в час, cron не для этого. Для первоначального вопроса теперь существует грань sidetiq, которая является хорошим решением. – Michael