rufus スケジューラを使用して、いくつかのタスクを頻繁に実行しています。スクリプトが開始されるとすぐにすべてのタスクを多かれ少なかれ実行し、次に指定された間隔で実行したいと思います。これは API でサポートされていないようですが、何か不足していますか?
次のように、最初の実行までの遅延として0.1秒を指定することに頼りました
scheduler = Rufus::Scheduler.new
scheduler.every '10s', :first_in => 0.1 do
#do some work
end
プロパティが 0 に設定されている場合:first_in
、スケジューラは最初の実行前に 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>'
これを行う正しい方法は何ですか?