views:

178

answers:

1

Here's my simple ideal case scenario for when I'd like delayed job to run:

  • When the first application server (whether through mongrel or passenger) starts, it'll start my delayed job workers.
  • When the last running application server terminates, it'll kill all the delayed job workers.

The first part (starting) is doable, although I'm not sure what the "right" or "best" way to do it is. Just make a conditional (on process not already running) system call to delayed_job start?

The second part (terminating) -- well, I'm not sure if it is doable or not. Definitely have no idea how this effect could be accomplished.

Any thoughts or ideas?

Is there another way that you start/end delayed job workers that you think is best?

Side question: The main questions above are for the production environment -- a more difficult case because there are multiple app servers running at the same time. Could the same thing be easily done in the development environment (where there's guaranteed to only be one application server, not a cluster of them) by forking a child process to run the delayed job workers that would always terminate when the parent terminates? How would I go about doing this?

+1  A: 

Hi Allan,

You could definitely pull the terminating off with god.

Simply watch the app processes and god will fire a callback when they're all stopped.

Joe Martinez
Good stuff! I'll look into it. Thanks.
Allan Grant