繁体   English   中英

您会建议采用哪种方法来实施基于Web的计划程序

[英]What approach would you recommend for implementing web-based schedulers

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

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

这行得通,但是由于某种原因,感觉并不是最好的方法。 您可以推荐一些东西,或对此有任何评论吗?

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

谢谢,

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

默认情况下,其他工具(例如BackgroundRB)实际上支持cron样式的工作程序。

我经常发现,执行每分钟一次的rake任务以将新的作业添加到delay_job确实很好; 您可能想尝试一下。 它是最有弹性的,可以让您将所有计时器逻辑保留在Ruby中,而又不需要丑陋的hack或可能破坏性的设置,例如我最初的delay_job示例(例如,您必须清除工作队列;现在您必须再次重置所有工作才能获得它们好好工作)。

Delayed_job非常容易上手,而且很容易被黑客入侵,因此,如果您正在寻找一个新的起点,那可能和其他地方一样好。

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

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

无法看到为什么您不使用cron和脚本/运行器。 这样做的好处是您不会始终加载(附加要求的)Rails环境,仅在需要运行作业时才加载。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM