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

Ric*_*dan 8 cron scheduling ruby-on-rails heroku ruby-on-rails-3.1

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

Tim*_*her 8

截至今天,您可以安排宝石,发条.Heroku正式支持这一点,你可以在这里找到他们的文档.

  • 请注意,[发条](https://devcenter.heroku.com/articles/clock-processes-ruby)需要一个dyno,所以它的成本与任何其他类型的dyno相同(每小时0.05美元,可计费到第二个) - 约**每月35美元**).那些*不*需要"每分钟"安排一次,但*每10分钟*,*每小时*,或*每天*(在特定时间)*都可以,然后考虑[Heroku Scheduler](https ://addons.heroku.com/scheduler),一个免费的附加组件. (3认同)

mu *_*ort 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
Run Code Online (Sandbox Code Playgroud)

然后在应用程序初始化期间的某个地方:

YourJob.start_me_up
Run Code Online (Sandbox Code Playgroud)

  • 你应该在一个大的`begin`,`rescue`块中包装整个"做需要做的事情",否则如果出现任何问题,你的工作就不会重启. (2认同)