我需要一个用于大型动态任务收集的调度程序。目前,我正在查看resque-scheduler,rufus-scheduler和clockwork。对于选择使用哪种(或哪种替代)的建议,我将不胜感激。
一些细节:
总结,我需要像cron这样的用于Ruby项目的东西,它可以处理大型的,动态变化的任务集合。
更新:我花了一天时间尝试调度库,现在我想简要总结一下新获得的经验。
我停止了对Clockwork和resque-scheduler库的关注,因为它们是更成熟的项目,具有更详细的文档。 Resque-scheduler基于rufus-scheduler,而Clockwork则受其启发,两者均可用于我正在寻找的解决方案。
两者都是独立的服务,应该在单独的进程中运行,可以处理为单个执行或循环执行安排的几乎无限量的任务。任务在线程内执行。
发条专家:
发条的缺点:
我为Clockwork实现了一个替代的Manager类(这是控制调度的gem的核心部分),以允许通过ZeroMQ消息进行调度控制。因此,我项目中的主要服务可以将命令发送到调度程序,例如“每天运行此命令”或“调度任务#10”,然后调度程序立即执行每个请求。
我对resque-scheduler的经验较少,但是目前看来,这是一个更好的解决方案。
resque-scheduler的优点:
Resque.remove_schedule(name)
即可删除特定任务。 resque-scheduler:
仔细观察后可能会出现其他现象,但此刻什么也没有。
那就是我现在所拥有的。顺便说一句,我已经发布了许多与调度相关的Ruby gems on GitHub的链接。
最佳答案
是纯调度程序。每当有Crond支持时,它都是可靠的(但是作业将在不同的进程中执行)。 Rufus-scheduler和Clockwork相似,在Ruby流程中,调度器(Clockwork受到rufus-scheduler的启发)。
Resque-scheduler(https://github.com/resque/resque-scheduler)建立在Resque(任务管理)和rufus-scheduler(计划管理)的基础上。
您也应该看看Sidekiq(http://sidekiq.org/)。看https://www.google.com/?q=sidekiq%20scheduler#q=sidekiq+scheduler
因此,请了解Resque和Sidekiq,然后查看适用于它们的调度程序。如果没有适合您的内容,请自己看一下调度程序(无论何时,rufus-scheduler,Clockwork等),也许您可以在它们之上进行构建。
关于ruby - Ruby中的大规模调度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24745809/