【问题标题】:Rufus scheduler fires at the scheduled time (expected ) and fires again after completion of previous runRufus 调度程序在预定时间(预期)触发,并在上一次运行完成后再次触发
【发布时间】:2017-11-22 21:50:54
【问题描述】:

我已安排 rufus cron 每小时运行一个方法(一种在远程数据库中发布复杂查询、检索结果并进行一些处理的方法),并且该方法在 99% 的时间内完成执行

Rufus 在每个预期时间都很好地触发了该方法,但问题是有时(1% fo time)该方法不会在一小时内完成;调度程序在预期时间触发第二个,并在上一次运行完成后再次触发第二个。

例如,

pin_sampling_job_scheduler = Rufus::Scheduler.new pin_sampling_job_scheduler.cron("22 * * * *") do puts "sampling starts" DatafetchRedshift.pin_sampling_job end

对于小时 = 00,方法在第 22 分钟触发(如预期的那样,假设作业运行了 1.5 小时)对于小时 =01,方法在第 22 分钟触发,然后在第 52 分钟触发(完成第一次运行后) .为什么会这样?任何帮助或建议将不胜感激。

鲁弗斯版本-3.3.4 导轨 - 4.1.6 Ruby 2.2.0

P.S - 我无法将调度程序的运行时间更改为超过一个小时,因为它已完成 99%

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 scheduling rufus-scheduler


    【解决方案1】:

    https://github.com/jmettraux/rufus-scheduler#overlap--false

    pin_sampling_job_scheduler = Rufus::Scheduler.new
    
    pin_sampling_job_scheduler.cron("22 * * * *", overlap: false) do
      ts = Time.now.strftime('%Y%m%d%H%M')
      puts "#{Time.now} - sampling #{ts} starts..."
      DatafetchRedshift.pin_sampling_job
      puts "#{Time.now} - sampling #{ts} stopped."
    end
    

    对于小时 = 00,方法在第 22 分钟触发(如预期的那样,假设作业运行了 1.5 小时)对于小时 =01,方法在第 22 分钟触发,然后在第 52 分钟触发(完成第一次运行后) .为什么会这样?

    您可以在https://github.com/jmettraux/rufus-scheduler/issues 报告问题(请在提交问题之前阅读https://github.com/jmettraux/rufus-scheduler#getting-help

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多