假设我想每天两次每隔x分钟运行一次耙子?我怎么能这样做?工作之间会吗?还是直到?或者我必须使用cron语法吗?
# Refresh daily scores
every 5.minutes, # :between '3pm' :and '1am' do ?
rake "games:scores_refresh"
end
答案 0 :(得分:3)
我不认为两者之间的选项可用,但你可以传递确切的时间或日期等语法可用作例子:
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:
正在做更多的R& D并发现以上是宝石创建者所表示的问题的解决方案。这是链接:
https://github.com/javan/whenever/issues/506
没有知道可以在上面添加的rjust
。关于AM& PM我认为你需要添加(不确定)。如果需要添加,请将其分为两部分。一个用于AM,另一个用于PM。
更新2:
我找到的另一个简单的解决方案是:
every '*/30 6-9 * * *' do
runner "Model.method"
end
上述情况每隔30分钟在6到9之间运行。
来源:
Rails Execute Cron Job or Rake task for specific time period
希望这有帮助。