我需要一个用于大型动态任务集合的调度程序。目前,我正在查看resque-scheduler,rufus-scheduler和clockwork。我将非常感谢您选择使用哪一种(或替代品)。
一些细节:
总结,我需要像Ruby项目那样的cron,它可以处理大量动态变化的任务集合。
更新:我花了一天时间尝试调度库,现在我想简要总结一下新获得的经验。
我已经停止了对Clockwork和resque-scheduler库的注意,因为这些是更成熟的项目,有更详细的文档。 Resque-scheduler基于rufus-scheduler,而Clockwork受其启发,两者都可以用于我正在寻找的解决方案。
两者都是应该在单独进程中运行的独立服务,可以处理为单个或经常执行而安排的几乎无限量的任务。任务在线程中执行。
发条专业人士:
发条缺点:
我已经为Clockwork实现了另一个Manager类(这是控制调度的gem的核心部分),以允许通过ZeroMQ消息进行调度控制。因此,我的项目中的主要服务可以向调度程序发送命令,例如"每天运行此操作"或者"取消调度任务#10",并且调度程序立即执行每个请求。
我对resque-scheduler的经验较少,但此时它似乎是一个更好的解决方案。
resque-scheduler pros:
Resque.remove_schedule(name)
即可删除特定任务。resque调度器:
在仔细观察之后,可能会出现其他东西,但目前还没有别的东西。
这就是我现在所拥有的。顺便说一句,我已经发布了许多与调度相关的Ruby宝石on GitHub的链接。
答案 0 :(得分:4)
是某种纯粹的调度程序。无论何时由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,发条,...),也许你可以在它们之上构建。