gpt4 book ai didi

ruby - 鲁弗斯调度程序 : run every x seconds with first run immediately

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:08 30 4
gpt4 key购买 nike

我正在使用 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>'

知道正确的方法是什么吗?

最佳答案

皮埃尔-路易很近:

require 'rufus-scheduler'

s = Rufus::Scheduler.new

p [ :scheduled_at, Time.now ]

s.every '5s', :first_in => 0.4 do
p [ :every, Time.now ]
end

s.join

默认情况下,Rufus-scheduler 每秒唤醒三次,因此 0.4 是一个很好的近似值。

这发出:

[:scheduled_at, Wed Jan 22 20:30:55 +0900 2014]
[:every, Wed Jan 22 20:30:56 +0900 2014]
[:every, Wed Jan 22 20:31:01 +0900 2014]
[:every, Wed Jan 22 20:31:06 +0900 2014]
[:every, Wed Jan 22 20:31:11 +0900 2014]
...

关于ruby - 鲁弗斯调度程序 : run every x seconds with first run immediately,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21280870/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com