我使用heroku调度程序每10分钟运行一次任务。任务正如下所示。我正在考虑如何防止下一个工作与当前工作重叠。有没有可以防止cron作业重叠的问题?
task force_close: :environment do
#get all unvoted wine_question
questions = Question.where(closed: false)
puts "Total #{questions} of wine_question will be closed"
finish_count = 0
questions.each do |question|
begin
question.force_close!
finish_count += 1
rescue StandardError => bang
puts "question #{self.id} error when running #{bang}"
end
end
puts "Total #{finish_count} of question was closed"
end
答案 0 :(得分:0)
有两种方式。
首先,
在问题上创建选中的字段。像force_closed:boolean
并在调用force_close!
方法时触摸force_closed字段
所以你可以通过where(closed: false, force_closed: false)
其次,
创建批次历史记录表。列应为task_name
和run_at
并在批处理历史记录表中保存运行时间信息,
# last line of task
BatchHistory.create(task_name: 'force_close', run_at: Time.now)