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



我想在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

相关内容

  • 没有找到相关文章

最新更新