因此,如果我的工作计划每5分钟运行一次,而且一次运行时间恰好需要4分钟,我希望它还能等待5分钟,直到下次开始,而不是等待只有1分钟。有没有办法用rufus-scheduler做到这一点?
虽然我可以在运行结束时安排作业本身,但看起来并不直接支持。我唯一的问题是引导问题。 (所以如果第1部分的答案是否定的,那么是否有内置的方法来使用rufus-scheduler来处理引导案例?
答案 0 :(得分:1)
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