首页 文章

Rails中的动态作业调度

提问于
浏览
13

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

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

  • Rufus scheduler看起来不错,但是我必须编写代码来保存作业并在rails重启时重新启动它们 .

  • Delayed_job处理持久性但我无法看到如何定期运行作业,除非可能在新的运行时重新安排作业

  • resqueresque-scheduler似乎非常接近,但我最终可能会尝试重新实现rails中的某些UI,以便用户可以添加/删除/管理作业,如果它可以使用与其余部分相同的ActiveRecord后端,那就太棒了 . 应用 .

3 回答

  • -1

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

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

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

  • 7

    我会以完全相同的理由决定反对resque . 相反,我们也选择了延迟工作,事实上,工作的最后一件事就是重新安排下一次工作的工作 .

  • 1

    我的公司制作CloudQuartz(www.thecloudblocks.com),它允许您通过API安排作业,并在它们运行时获得回调 .

    它有一个Web UI,可以向您显示作业,趋势和状态,但除非您使用API,否则此UI不会向您的客户开放 . 希望你觉得这很有帮助 .

相关问题