【问题标题】:What approach would you recommend for implementing web-based schedulers你会推荐什么方法来实现基于 Web 的调度程序
【发布时间】:2009-07-14 20:37:07
【问题描述】:

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

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

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

我在 Ruby on Rails 工作,但没有理由将本次讨论仅限于 RoR。

谢谢,

【问题讨论】:

    标签: ruby-on-rails web-applications scheduling


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      一个出色的 Railscast 截屏视频对此进行了介绍 - http://railscasts.com/episodes/129-custom-daemon

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 是的,这是一个缺点。我想我自己托管的任何东西都没有关系,但如果我需要提供一个包供客户安装怎么办?
        • 您可以将其附加到 crontab 的末尾(需要 sudo)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多