有没有办法使用 rufus-scheduler 每 5 分钟调度一次作业,从最后一次作业运行完成开始



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

相关内容

最新更新