我有rufus调度程序,我打算在新日程表中查看我的日程表。有没有办法做到这一点?类似的东西:
schedule.every "1m" do
#check for new entries in database
end
ANSWERED
scheduler.every '1m' do
#check for new stuff in the database
newest_jobs = Schedule.all_cron_jobs.select{ |x| x.created_at > 1.minute.ago } - all_schedules_with_cron
unless newest_jobs.empty?
newest_jobs.each do |new_job|
scheduler.every new_job.cron_string do
job.call
end
end
end
end
jobs.call是对延迟作业的调用以对该计划进行排队。所以基本上,获取最新的时间表,并在每次cron匹配时调用rufus将作业放入队列
答案 0 :(得分:0)
使用表格上的created_at
列检查自上次检查后的新条目。
last_checked = 1.minute.ago
schedule.every "1m" do
new_entries = Schedule.where(['created_at >= ?', last_checked])
last_checked = Time.now
# deal with entries here.
end
您可以通过最小化last_checked
个周期之间的差距来改善这一点。
你是不是更好地在模型上使用观察者而不是这个?保证不会因时间问题而错过。