因此,如果我有一项计划每 5 分钟运行一次的作业,而运行一次恰好需要 4 分钟,我希望它仍然等待 5 分钟直到下一次开始,而不是只等待 1 分钟. 有什么办法可以用 rufus-scheduler 做到这一点?
虽然我可能会在运行结束时安排作业本身,但看起来并不直接支持这一点。我唯一遇到的问题是引导问题。(所以如果第 1 部分的答案是否定的,那么 rufus-scheduler 是否有内置方法来处理引导案例?
因此,如果我有一项计划每 5 分钟运行一次的作业,而运行一次恰好需要 4 分钟,我希望它仍然等待 5 分钟直到下一次开始,而不是只等待 1 分钟. 有什么办法可以用 rufus-scheduler 做到这一点?
虽然我可能会在运行结束时安排作业本身,但看起来并不直接支持这一点。我唯一遇到的问题是引导问题。(所以如果第 1 部分的答案是否定的,那么 rufus-scheduler 是否有内置方法来处理引导案例?
Rufus-scheduler 支持“间隔”作业。
它们在自述文件中进行了描述: https ://github.com/jmettraux/rufus-scheduler/#in-at-every-interval-cron
require 'rufus-scheduler'
s = Rufus::Scheduler.new
s.interval('5m') do |job|
puts "Doing it..."
sleep(rand * 1000)
puts "done. See you in #{job.interval}."
end
#s.join
如果这不是您要查找的内容,请注意,对于“每个”作业,可以在飞行中修改“next_time”,例如:
require 'rufus-scheduler'
s = Rufus::Scheduler.new
s.every '5m' do |job|
t = Time.now
puts "doing the job..."
# ...
if Time.now - t > 4 * 60
job.next_time = Time.now + 1 * 60
end
puts "next_time will be #{job.next_time}."
end
#s.join
这也可以派上用场。
https://github.com/jmettraux/rufus-scheduler#every-jobs-and-chang-the-next_time-in-flight