我正在使用 rufus 调度程序让一些任务经常执行。我希望所有任务在脚本启动时或多或少地立即运行,然后以给定的时间间隔运行。API似乎不支持这,还是我遗漏了什么?
我已将 0.1 秒指定为第一次运行前的延迟,如下所示
scheduler = Rufus::Scheduler.new
scheduler.every '10s', :first_in => 0.1 do
#do some work
end
如果该:first_in
属性设置为 0,调度程序会在第一次运行之前等待整整 10 秒。如果该值设置得太低(我想在执行任务时评估为过去的值),或者如果我使用Time.now
,则会引发以下错误:
~/.ruby/gems/rufus-scheduler-3.0.4/lib/rufus/scheduler/jobs.rb:383:in `first_at=': cannot set first[_at|_in] in the past: 1.0e-07 -> 2014-01-22 10:44:32 +0000 (ArgumentError)
from ~/.ruby/gems/rufus-scheduler-3.0.4/lib/rufus/scheduler/jobs.rb:445:in `first_at='
from ~/.ruby/gems/rufus-scheduler-3.0.4/lib/rufus/scheduler/jobs.rb:370:in `initialize'
from ~/.ruby/gems/rufus-scheduler-3.0.4/lib/rufus/scheduler/jobs.rb:457:in `initialize'
from ~/.ruby/gems/rufus-scheduler-3.0.4/lib/rufus/scheduler.rb:570:in `new'
from ~/.ruby/gems/rufus-scheduler-3.0.4/lib/rufus/scheduler.rb:570:in `do_schedule'
from ~/.ruby/gems/rufus-scheduler-3.0.4/lib/rufus/scheduler.rb:207:in `every'
from rufus_runner.rb:11:in `<main>'
知道这样做的正确方法是什么吗?