Like I said in my short “Daemon-ize your processes on the cheap” series, Resque was the tool that had given me the most grief when using Supervisor. No more!
How did I work such sorcery, you ask? Follow my 3-step formula for guaranteed success:
- Use the Resque 2.0.0 prerelease or newer.
- Use Supervisor 3.0.0 or newer.
- In the Supervisor config for your Resque workers, make sure you set:
- an environment variable for HOME
- an environment variable for PATH
- a directory for Supervisor to
cdto and run your worker from
To illustrate my point, here’s a cut-down example of my WORKING RESQUE CONFIG FOR SUPERVISOR! YAY! HOORAY! HUZZAH!
; Save this into your /etc/supervisor.d directory, build an awesome-app ; and wire this up to your totally_awesome worker. Watch MAGIC happen. [program:awesome-worker] command=/usr/bin/bundle exec resque work -q default -r ./app/workers/totally_awesome.rb autostart=true autorestart=true stopsignal=QUIT stdout_logfile=/var/log/supervisor/awesome-worker_stdout.log stderr_logfile=/var/log/supervisor/awesome-worker_stderr.log user=awesome directory=/srv/applications/awesome-app environment=PATH='/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin',HOME='/home/awesome' view raw
But seriously, all confetti aside, so, so many thanks to the Resque team. Their work picking up the code base and running with it has really, really paid off. A big round of applause to everyone who contributed to improving Resque.