Rails中的动态作业调度

Jam*_*dle 13 ruby-on-rails scheduled-tasks

我已经看过Rails的一些调度库,我想帮助选择一个,因为似乎没有一个能满足我的要求.这是一个相当常见的用例:

我们有许多报告,我们希望让用户在他们想要安排特定报告通过邮件发送给他们的时间和频率时进行设置.用户需要能够查看他们已安排的报告列表,并且他们应该能够取消或更改现有的计划报告.计划的作业应该在服务器重新启动后继续存在.目前,我并不担心只在一个rails服务器集群中的单个节点上运行作业.

  • Rufus调度程序看起来不错,但是我必须编写代码来保存作业并在rails重启时重新启动它们.
  • Delayed_job处理持久性但我无法看到如何定期运行作业,除非可能在新运行时重新安排作业
  • resqueresque调度似乎很接近,但我想,以避免对Redis的加入到我们的堆栈,我可能最终要重新实现一些UI的轨道,使用户可以添加/删除/管理作业,并如果它可以使用与应用程序其余部分相同的ActiveRecord后端,那就太棒了.

Mik*_*cic 7

我建议将Delayed :: Job用于实际作业,因为它会自动处理用户的持久性,并且您可以使用该delayed_jobs表进行管理(允许用户修改/删除他们已启动的作业).

在自动调度作业时,您可以使用Clockwork gem.它是由Heroku构建的(如果我没有记错的话),基本上允许你cron在ruby/rails应用程序中模拟/替换它.

通过上面的两个库,您可以覆盖所有基础.