Rails 每当 gem: 在两次之间安排任务?

Rails whenever gem: schedule task between two times?

假设我想 运行 每天两次之间每隔 x 分钟耙一次?我该怎么做?工作之间会吗?还是直到?还是我必须使用 cron 语法?

# Refresh daily scores
every 5.minutes, # :between '3pm' :and '1am' do ?
  rake "games:scores_refresh"
end

我认为 between 选项不可用,但您可以传递确切的时间或日期等语法可作为示例使用:

https://github.com/javan/whenever

对于你的任务,你可以传递一系列时间:

every :day, :at => (1..15).to_a.map{ |x| (0..55).step(5).to_a.map{ |a| ["#{x}:#{a}"] } }.flatten do
  # Run rake task.
end

# => ["1:0", "1:5", "1:10", "1:15", "1:20", "1:25", "1:30", "1:35", "1:40", "1:45", "1:50", "1:55", "2:0", "2:5", "2:10", "2:15", "2:20", "2:25", "2:30", "2:35", "2:40", "2:45", "2:50", "2:55", "3:0", "3:5", "3:10", "3:15", "3:20", "3:25", "3:30", "3:35", "3:40", "3:45", "3:50", "3:55", "4:0", "4:5", "4:10", "4:15", "4:20", "4:25", "4:30", "4:35", "4:40", "4:45", "4:50"...]

这只是一个例子。你可以随心所欲地制作它。而且我不确定 whenever 是否接受 24 小时格式的时间。所以请检查一下并像这样尝试。

更新 1:

进行了更多的研发,发现上述内容可以解决 gem 创建者所指出的问题。这是 link:

https://github.com/javan/whenever/issues/506

不知道rjust可以在上面补充。关于上午和下午,我认为您需要添加(不确定)。如果需要添加,请将其分成两部分。一个用于上午,另一个用于下午。

更新二:

我找到的另一个简单的解决方案是:

every '*/30 6-9 * * *' do
  runner "Model.method"
end

以上在 6 点到 9 点之间每 30 分钟运行一次。

来源:

Rails Execute Cron Job or Rake task for specific time period

希望这对您有所帮助。

应该有效的简单 cron 方法:

every '*/5 15-23,0 * * *' do
  rake "games:scores_refresh"
end

运行 从下午 3 点到晚上 11 点之间的任何一个小时以及从午夜开始的一个小时,每五分钟进行一次 rake 作业。