【问题标题】:I need a cron expression我需要一个 cron 表达式
【发布时间】:2019-07-12 00:01:39
【问题描述】:

我需要一个 cron 表达式来准确地在 5:30 am 工作日执行一些代码。

我试过这个

30 5 * * 1-5

但它在晚上 10:30 执行 在网上搜索我找到了这个

0 30 5 ? * MON,TUE,WED,THU,FRI *

但是 ruby​​ 向我显示一条异常消息:

C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler/jobs.rb:674:in `next_time_from': undefined method `next_time' for nil:NilClass (NoMethodError)
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler/jobs.rb:668:in `set_next_time'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler/jobs.rb:636:in `initialize'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler.rb:617:in `new'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler.rb:617:in `do_schedule'
    from C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/rufus-scheduler-3.5.2/lib/rufus/scheduler.rb:224:in `cron'
    from E:/Marcos_Guerra/RubyWorkspace/calisoft-suite/Proyectos/RedmineApi/api.rb:30:in `<main>'

这是我的代码:

ENV['TZ'] = 'America/New_York'

scheduler = Rufus::Scheduler.new
scheduler.cron '0 30 5 ? * MON,TUE,WED,THU,FRI *' do
    begin
      # do something that might fail...
      # every day of the week at 05:30 am
      puts RedmineConnector.resetYourLife(user,pass)
    rescue => e

    end
  end
sleep 3

我正在使用 Rufus Gem

【问题讨论】:

  • 我认为你第一次做对了,它可能是时区问题而不是 cron 表达式问题:see crontab.guru
  • 非常感谢。感谢您的帮助

标签: ruby cron expression


【解决方案1】:

According to the project README,您可以使用时区指定 cron 作业,如下所示:

scheduler.cron '30 5 * * 1-5 America/New_York' do
  # ...
end

确实的意思是“在工作日的凌晨 5:30”,如您所愿。

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2010-09-23
    • 2014-10-31
    相关资源
    最近更新 更多