How to setup a group in supervisord?

Joshua Olson picture Joshua Olson · Oct 16, 2012 · Viewed 14k times · Source

So I'm setting up supervisord and trying to control several processes and that all works fine, now I want to setup a group so I can start/stop different sets of processes rather than all or nothing. Here's a snippet of my config file.

[group:tapjoy]
programs=tapjoy-game1,tapjoy-game2

[program:tapjoy-game1]
command=python tapjoy_pinger.py -g game1
directory=/go/here/first
redirect_stderr=true
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

[program:tapjoy-game2]
command=python tapjoy_pinger.py -g game2
directory=/go/here/first
redirect_stderr=true
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

Now from reading the docs this looks to me like it should work, but calling supervisorctl restart tapjoy: doesn't do anything.

Am I missing something?

Adding a star doesn't give an error, but doesn't do anything either.

supervisorctl restart tapjoy:*
supervisorctl status
tapjoy_game1                     RUNNING    pid 4697, uptime 1 day, 21:56:23
tapjoy_game2                     RUNNING    pid 4698, uptime 1 day, 21:56:23
tapjoy_game3                     RUNNING    pid 4699, uptime 1 day, 21:56:23
tapjoy_game4                     RUNNING    pid 4700, uptime 1 day, 21:56:23
tapjoy_game5                     RUNNING    pid 4701, uptime 1 day, 21:56:23

Answer

Martijn Pieters picture Martijn Pieters · Oct 17, 2012

You need to use a * wildcard to select all programs in a group:

supervisorctl restart tapjoy:*

Note: it may that your shell requires you to escape the *, usually with \*