Gem Clockwork - 代替 Cron 的计划任务工具

huacnlee · 2013年09月05日 · 最后由 imlcl 回复于 2013年09月06日 · 4849 次阅读

Cron 一直以来都是我们常用的计划任务工具,但是 Cron 却并不是那么好用,它有下面这些问题:

  1. 执行环境与 Web App 的环境不同,导致容易失败;
  2. 不好调试;
  3. 多机器部署的时候很麻烦;
  4. 语法奇怪(虽然有 whenever 这种工具);

看看,这些人都被 Cron 困扰着:


Clockwork 是一个为了代替 Cron 而设计的工具

例子:

require 'clockwork'
include Clockwork

Clockwork.configure do |config|
  config[:sleep_timeout] = 5
  config[:tz] = 'EST'
  config[:max_threads] = 15
end

handler do |job|
  puts "Running #{job}"
end

every(10.seconds,'look.job') do
  puts "hahaha"
end
every(10.hours,'backup.job') do
  `backup -t xxx`
end

https://github.com/tomykaira/clockwork

当然,这类工具为了保证稳定性,还得配上 God


PS: Clockwork 我是在 Feedbin 的开源代码里面发现的

mark..用 cron 老感觉没什么安全感..

#1 楼 @virgil 还有什么工具安全感能比得上系统组件

挺好,另外 crontab 有一个问题,不支持秒级别的

@Rei 可能是自己用得不好吧...

#2 楼 @Rei 重点还是环境问题和多机器同步麻烦

#5 楼 @huacnlee 可以只用一台机器 cron, 其中的任务脚本是 ssh 到各机器上执行任务... 好管理了吧...

#5 楼 @huacnlee 如果是 rails 的话,配合 rake task 环境应该是没什么问题的。多机器同步的话,跟 cron 本身有什么关系呢?

#7 楼 @lmorenbit cron 里面有好多种规则的话就比较麻烦

当然,cron 多机同步是可以解决的,重点还是调试不方便

不是有个 whenever 解决问题吗?输出 log, dsl cron 语法,环境自动 bash -l -c

这个和 whenever 有什么不一样?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号