开发者

scheduling a job every minute Rails 3.1 on Heroku

I want to run a task every minute on Heroku to check if conditions are met to time-out certain user tasks. I can only run a Heroku cron job every hour, so what开发者_运维技巧's the best way to set up a timed task like this. I am using Rails 3.1 on Heroku.


As of today, you can the scheduling gem, clockwork. Heroku officially supports this and you can find their documentation here.


You could use delayed_job with a self-restarting job with a :run_at. Something sort of like this:

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

And then somewhere during your application's initialization:

YourJob.start_me_up


Clockwork is the way to go but I will suggest another workaround.

Use scheduler (every 10min) + delayed jobs to execute the task every minute. This seems a little bit more reliable solution than the one without scheduler.

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜