【发布时间】:2012-08-23 18:50:25
【问题描述】:
我有一个 config/schedule.yml 文件,其中包含用于在我的应用程序中重复作业的 cron。但我不确定在哪里/如何初始化该文件?在 Resque 中,我们通常在 resque.rake 文件中对其进行初始化。
【问题讨论】:
标签: ruby ruby-on-rails-3 scheduled-tasks sidekiq
我有一个 config/schedule.yml 文件,其中包含用于在我的应用程序中重复作业的 cron。但我不确定在哪里/如何初始化该文件?在 Resque 中,我们通常在 resque.rake 文件中对其进行初始化。
【问题讨论】:
标签: ruby ruby-on-rails-3 scheduled-tasks sidekiq
在 2018 年末,Sidekiq 提供了类似 cron(又称“定期”)作业调度的选项。
最简单的选择是购买 Sidekiq Enterprise,它为此功能提供官方支持。一个更便宜的选择是安装https://github.com/ondrejbartas/sidekiq-cron,它(如写作)得到积极维护,下载量超过四百万。
【讨论】:
Sidekiq 并不是真正为重复性工作而设计的。引用自sidekiq github wiki page:
对于重复性任务,我建议使用与系统的 cron 集成的时钟或任何 gem 来安排任务。
我没有使用过sidekiq(但其他类似的工具,如delayed_job 和纯ruby 调度程序,如rufus_scheduler),但非基于cron 的工具的一个主要问题是保证重复作业将实际执行,并且只执行您想要的次数到。在有乘客的典型生产环境中,很容易发生所有 ruby 进程停止(因此根本不执行)或 20 个进程都试图执行相同的作业。
我们早就切换到whenever,为此编写重复性工作很有趣,并且可以解决在您的系统中添加 cronjobs 的所有麻烦。
如果您真的想要一个更简单的解决方案并且不需要可靠的执行,rufus_scheduler 是一个选项
【讨论】: