2

我发现我经常需要在我开发的应用程序中实现某种调度程序。应用范围可以从简单的维护任务到相当复杂的任务。

到目前为止,我的方法是设置 cron 作业,这些作业基本上对排队的命令进行批处理。例如,我有 cron 每 5 分钟调用一次脚本(我在 RubyOnRails 中工作,所以这是一个运行脚本),它检查是否有任何项目需要处理,然后将任务委托给适当的处理程序。

这可行,但由于某种原因感觉不是最好的方法。你能推荐一些东西,或者对此有任何意见吗?

我在 Ruby on Rails 工作,但没有理由这个讨论应该仅限于 RoR。

谢谢,

4

3 回答 3

3

有多种方法可以做到这一点。对于我们最近开发的一个项目,我们使用了延迟工作,这是一个优秀的 Rails 异步工作工具。我们可以将作业设置为每 5 分钟运行一次,然后该作业在完成后创建另一个作业,依此类推。

BackgroundRB 等其他工具实际上默认支持 cron 样式的工作程序。

我经常发现做一个每分钟一次的 rake 任务来添加新的工作到 delay_job 效果很好;你可能想试试。它是最有弹性的,可以让您将所有计时器逻辑保留在 Ruby 中,而无需像我最初的延迟作业示例那样需要丑陋的 hack 或潜在的易碎设置(例如,您必须清除工作队列;您现在必须再次重置所有作业才能获得它们好好工作)。

Delayed_job 非常容易上手并且非常容易破解,所以如果你正在寻找一个开始的地方,那可能是一个很好的地方。

于 2009-07-14T22:04:15.557 回答
1

另一个建议是创建自己的自定义守护程序。这将使您可以灵活地做几乎任何您需要的事情。

它包含在一个优秀的 Railscast 截屏视频中 - http://railscasts.com/episodes/129-custom-daemon

于 2009-07-16T15:38:44.213 回答
0

看不出你为什么不使用 cron 和 script/runner。好处是您不必始终加载(额外需要的)Rails 环境,仅在需要运行作业时才加载。

缺点是它取决于 cron 的存在......?

于 2009-07-14T22:26:38.023 回答