3.0a7 (2009-05-24)

  • We now bundle our own patched version of Medusa contributed by JasonKirtland to allow Supervisor to run on Python 2.6. This was donebecause Python 2.6 introduced backwards incompatible changes toasyncore and asynchat in the stdlib.

  • The console script memmon, introduced in Supervisor 3.0a4, hasbeen moved to Superlance (http://pypi.python.org/pypi/superlance).The Superlance package contains other useful monitoring tools designedto run under Supervisor.

  • Supervisorctl now correctly interprets all of the error codes that canbe returned when starting a process. Patch by Francesc Alted.

  • New stdout_events_enabled and stderr_events_enabled config optionshave been added to the [program:x], [fcgi-program:x], and[eventlistener:x] sections. These enable the emitting of newPROCESS_LOG events for a program. If unspecified, the default is False.

If enabled for a subprocess, and data is received from the stdout orstderr of the subprocess while not in the special capture mode used byPROCESS_COMMUNICATION, an event will be emitted.

Event listeners can subscribe to either PROCESS_LOG_STDOUT orPROCESS_LOG_STDERR individually, or PROCESS_LOG for both.

  • Values for subprocess environment variables specified with environment=in supervisord.conf can now be optionally quoted, allowing them tocontain commas. Patch by Tim Godfrey.

  • Added a new event type, REMOTE_COMMUNICATION, that is emitted by a newRPC method, supervisor.sendRemoteCommEvent().

  • Patch for bug #268 (KeyError on here expansion forstdout/stderr_logfile) from David E. Kindred.

  • Add reread, update, and avail commands based on AndersQuist’s online_config_reload.diff patch. This patch extendsthe “add” and “drop” commands with automagical behavior:

  1. In supervisorctl:
  2.  
  3. supervisor> status
  4. bar RUNNING pid 14864, uptime 18:03:42
  5. baz RUNNING pid 23260, uptime 0:10:16
  6. foo RUNNING pid 14866, uptime 18:03:42
  7. gazonk RUNNING pid 23261, uptime 0:10:16
  8. supervisor> avail
  9. bar in use auto 999:999
  10. baz in use auto 999:999
  11. foo in use auto 999:999
  12. gazonk in use auto 999:999
  13. quux avail auto 999:999
  14.  
  15. Now we add this to our conf:
  16.  
  17. [group:zegroup]
  18. programs=baz,gazonk
  19.  
  20. Then we reread conf:
  21.  
  22. supervisor> reread
  23. baz: disappeared
  24. gazonk: disappeared
  25. quux: available
  26. zegroup: available
  27. supervisor> avail
  28. bar in use auto 999:999
  29. foo in use auto 999:999
  30. quux avail auto 999:999
  31. zegroup:baz avail auto 999:999
  32. zegroup:gazonk avail auto 999:999
  33. supervisor> status
  34. bar RUNNING pid 14864, uptime 18:04:18
  35. baz RUNNING pid 23260, uptime 0:10:52
  36. foo RUNNING pid 14866, uptime 18:04:18
  37. gazonk RUNNING pid 23261, uptime 0:10:52
  38.  
  39. The magic make-it-so command:
  40.  
  41. supervisor> update
  42. baz: stopped
  43. baz: removed process group
  44. gazonk: stopped
  45. gazonk: removed process group
  46. zegroup: added process group
  47. quux: added process group
  48. supervisor> status
  49. bar RUNNING pid 14864, uptime 18:04:43
  50. foo RUNNING pid 14866, uptime 18:04:43
  51. quux RUNNING pid 23561, uptime 0:00:02
  52. zegroup:baz RUNNING pid 23559, uptime 0:00:02
  53. zegroup:gazonk RUNNING pid 23560, uptime 0:00:02
  54. supervisor> avail
  55. bar in use auto 999:999
  56. foo in use auto 999:999
  57. quux in use auto 999:999
  58. zegroup:baz in use auto 999:999
  59. zegroup:gazonk in use auto 999:999
  • Fix bug with symptom “KeyError: ‘process_name’” when using a logfile nameincluding documentedprocess_name Python string expansions.

  • Tab completions in the supervisorctl shell, and a foreground mode forSupervisor, implemented as a part of GSoC. The supervisorctl program nowhas a fg command, which makes it possible to supply inputs to aprocess, and see its output/error stream in real time.

  • Process config reloading implemented by Anders Quist. Thesupervisorctl program now has the commands “add” and “drop”.“add ” adds the process group implied by in the config file. “drop ” removes the processgroup from the running configuration (it must already be stopped).This makes it possible to add processes to and remove processes froma running supervisord without restarting the supervisord process.

  • Fixed a bug where opening the HTTP servers would fail silentlyfor socket errors other than errno.EADDRINUSE.

  • Thanks to Dave Peticolas, using “reload” against a supervisordthat is running in the background no longer causes supervisordto crash.

  • Configuration options for logfiles now accept mixed case reservedwords (e.g. “AUTO” or “auto”) for consistency with other options.

  • childutils.eventdata was buggy, it could not deal with carriage returnsin data. See http://www.plope.com/software/collector/257. Thanksto Ian Bicking.

  • Per-process exitcodes= configuration now will not accept exitcodes that are not 8-bit unsigned integers (supervisord will notstart when one of the exit codes is outside the range of 0 - 255).

  • Per-process directory value can now contain expandable values like%(here)s. (See http://www.plope.com/software/collector/262).

  • Accepted patch from Roger Hoover to allow for a new sort ofprocess group: “fcgi-program”. Adding one of these to yoursupervisord.conf allows you to control fastcgi programs. FastCGIprograms cannot belong to heterogenous groups.

The configuration for FastCGI programs is the same as regular programsexcept an additional “socket” parameter. Substitution happens on thesocket parameter with the here and program_name variables:

  1. [fcgi-program:fcgi_test]
  2. ;socket=tcp://localhost:8002
  3. socket=unix:///path/to/fcgi/socket
  • Supervisorctl now supports a plugin model for supervisorctlcommands.

  • Added the ability to retrieve supervisord’s own pid throughsupervisor.getPID() on the XML-RPC interface or a new“pid” command on supervisorctl.