因此,如果我有一个计划每 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-changing-the-next_time-in-flight