Rufus调度程序在使用unicorn时运行多次,通过:lockfile进行了修复,但如何消除错误消息?

9
scheduler = Rufus::Scheduler.new :lockfile => ".rufus-scheduler.lock"

scheduler.every("60") do
...
end

环境:Ubuntu,rails 4,rufus,unicorn,nginx

Unicorn有多个worker,因此上面的“every”任务将在每60秒内被执行多次。

根据这个答案: rufus scheduler running twice each time,我添加了:lockfile选项,并且它起作用了!

但是,从日志中看,似乎“every”任务仍然会尝试调用,导致出现大量错误消息:

E, [2014-05-09T01:59:47.496840 #2747] ERROR -- : cannot schedule, scheduler is down or shutting down (Rufus::Scheduler::NotRunningError)
/home/sohmobile/shared/bundle/ruby/2.1.0/gems/rufus-scheduler-3.0.7/lib/rufus/scheduler.rb:605:in `do_schedule'
/home/sohmobile/shared/bundle/ruby/2.1.0/gems/rufus-scheduler-3.0.7/lib/rufus/scheduler.rb:209:in `every'
/home/sohmobile/releases/20140509014407/config/initializers/task_scheduler.rb:3:in `<top (required)>'

我该如何解决这个问题?

提前感谢您的帮助。

1个回答

17
这可能会解决您的问题:
require 'rufus-scheduler'

scheduler = Rufus::Scheduler.new(:lockfile => ".rufus-scheduler.lock")

unless scheduler.down?

  scheduler.every("60") do
    # ...
  end
end

如果是这样的话,请接受我的答案并给它投票。提前感谢 :-) - jmettraux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接