在Heroku上每分钟调度一个作业Rails 3.1

时间:2011-09-06 06:56:50

标签: ruby-on-rails heroku cron scheduling ruby-on-rails-3.1

我想在Heroku上每分钟运行一个任务来检查是否满足条件以超时某些用户任务。我每小时只能运行一次Heroku cron作业,那么设置这样的定时任务的最佳方法是什么。我在Heroku上使用Rails 3.1。

3 个答案:

答案 0 :(得分:8)

截至今天,你可以安排宝石clockwork。 Heroku正式支持此功能,您可以找到他们的文档here

答案 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