views:

79

answers:

2

Hi! 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 the "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 !
Clément

+1  A: 

Looks like that's the right approach: http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/

tfe
+1 Yep, that is the best reference page for setting this up.
wuputah
+1  A: 

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.

tfe
Yep! The way I describe in my question is already almost working fine (I'll put it on Github soon). I was just wondering if it is good in the principle, and waiting for someone to say me "Stop ! you can assign a distinct worker on a distinct task doing that :..." :)
Clément
Yep, pretty certain there's no way to do that.
tfe