2011-06-07 55 views
3

我需要构建一个后台作业,通过RSS源的列表并分析它们每隔10分钟进行一次分析。delayed_job,守护进程或其他gem for recurring后台作业

我一直在使用delayed_job来处理后台作业,我非常喜欢它。我相信虽然它不是为循环后台作业而构建的。我想我可以在每个人的最后自动安排后台工作(也许只需要通过begin..rescue来确保它可以执行)。或预先安排说一个月的提前值得的工作,并有另一个重新安排每个月..等

这引起了一些有关我,我开始问自己:如果服务器在执行中和工作没有按计划进行?

我也看过守护程序的宝石,它看起来像它运行简单的Ruby脚本启动/停止命令。我喜欢delayed_job安排和处理重试的方式。

你在这种情况下推荐使用什么?你认为用反复出现的后台工作来设计这样一个系统的最好方法是什么?你也知道一种方式,我可以监控后台进程,并得到通知,如果它停止?

回答

1

我认为这是一个类似的问题:A cron job for rails: best practices? - 不仅有答案,而且还有关于Railcast有关后台作业的链接。

我使用了cron + delayed_job,但是计划任务应该每天运行几次,大部分只是一次。

2

我刚刚为类似的任务(使用:run_at => 2.days.from_now)实现了delayed_job,并发现它是一个完美契合。处理您对流程失败问题的关注的最简单方法是将该工作的第一步创建为下一个工作。此外,您可以创建与delayed_job模型的has_many关系,该模型允许您访问:last_error。或者,看看readme的“钩子”部分,它有失败的完美例子。

0

看看SimpleWorker。这是一个弹性调度和后台处理工作队列。它基于云,具有持久性和冗余性,因此,如果服务器停机或重新启动,则无需担心。

在调度方面非常灵活,可以很好地反省队列中的作业以及状态和错误的通知。

完全披露:我在SimpleWorker工作。

相关问题