开发者

Resque Scheduler on Heroku... Do it remotely?

开发者 https://www.devze.com 2023-01-18 14:48 出处:网络
I\'m adding Resque-Scheduler in my app on Heroku So... I need ONE alone and distinct worker acting as the scheduler and

I'm adding Resque-Scheduler in my app on Heroku

So... I need ONE alone and distinct worker acting as the scheduler and many doing the jobs.

This is how I've done it :

I've a distinct Heroku App which does nothing but has 1 resque-scheduler worker, running 24/7, adding Resque tasks to the Redis DB of t开发者_Go百科he "distant" main App.

(I do that mapping jobs:work task to resque:scheduler or resque:work)

Is this the best way to do it on the Heroku's platform ; or am I doing it totally wrong ?

Thanks !

EDIT: minimal app for scheduling on Heroku : http://github.com/clmntlxndr/heroku-scheduler

UPDATE: With the new CEDAR stack on Heroku and Procfiles, it's possible to start a distinct task for each worker.

web:        bundle exec rails server -p $PORT
scheduler:  bundle exec rake resque:scheduler
worker:     bundle exec rake jobs:work

http://devcenter.heroku.com/articles/procfile


I think I misread your question the first time. I missed the part where scheduler requires a separate rake task.

Yes, I think the only way to do it is to have two separate heroku apps, because heroku workers will only run rake jobs:work and presumably you can only map this onto one of the resque rake tasks.

You could try this:

desc "Alias for resque:work (To run workers on Heroku)"
task "jobs:work" => ["resque:work", "resque:scheduler"]

But I have sincere doubts about that actually working properly with how Heroku monitors worker processes and stuff. Also, double check the rake syntax there; it's just from memory. I know it's possible to specify multiple dependencies though.

0

精彩评论

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