我想在Heroku上每分钟运行一个任务来检查是否满足条件以超时某些用户任务。我每小时只能运行一次Heroku cron作业,那么设置这样的定时任务的最佳方法是什么。我在Heroku上使用Rails 3.1。
答案 0 :(得分:8)
答案 1 :(得分:7)
您可以将delayed_job与:run_at
的自重启作业一起使用。有点像这样:
class YourJob
def do_interesting_things
#... Do what needs to be done.
self.delay(:run_at => 1.minute.from_now).do_interesting_things
end
def self.start_me_up
new.do_interesting_things
end
end
然后在应用程序初始化期间的某个地方:
YourJob.start_me_up
答案 2 :(得分:0)
顺便说一句,但我会建议另一个解决方法。
使用调度程序(每10分钟)+延迟的作业每分钟执行一次任务。这似乎比没有调度程序的解决方案可靠一些。
MyJob.run!
(1..8).each |i|
MyJob.delay(run_at: i.minutes.from_now).run! # create 8 more jobs (each start 1 minute later)
end