我正在使用rufus調度程序來執行每個經常執行的任務。我希望所有的任務都能在腳本啓動時立即運行,然後以給定的時間間隔運行。這似乎不被API支持,或者我錯過了什麼?Rufus調度程序:立即運行,每x秒運行一次
我使出指定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>'
任何想法是什麼正確的方法是做到這一點?
Thx男子的解釋 –
這不是我在我的測試中發現的。如果我指定0.1,則更接近立即執行。見我的結果,這是典型的: \t:first_in => 0.1 \t \t [:scheduled_at, 「57:00.010」] \t \t [:每個 「57:00.312」] \t \t [:單,「 57:05.426「] \t \t [:every,」57:10.544「] \t:first_in => 0。4 \t \t [:scheduled_at, 「57:22.108」] \t \t [:每個 「57:22.710」] \t \t [:每個 「57:27.828」] \t \t [:每個「,57: 32.944「] –
非常好,幹得好! – jmettraux