我想在Heroku上每分钟运行一个任务,以检查是否满足使某些用户任务超时的条件。我每小时只能运行一个Heroku cron作业,那么设置这样一个定时任务的最佳方法是什么呢?我在Heroku上使用Rails 3.1
从今天起,你可以调度gem, clockwork。Heroku官方支持这个,你可以在这里找到他们的文档。
您可以将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
Clockwork是一种可行的方法,但我将建议另一种解决方法。
使用调度器(每隔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