Supervisor v3.0.a7 Release Notes

Release Date: 2009-05-24 // almost 15 years ago
    • We now bundle our own patched version of Medusa contributed by Jason Kirtland to allow Supervisor to run on Python 2.6. This was done because Python 2.6 introduced backwards incompatible changes to asyncore and asynchat in the stdlib.

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

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

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

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

    Event listeners can subscribe to either PROCESS_LOG_STDOUT or PROCESS_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 to contain commas. Patch by Tim Godfrey.

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

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

    • โž• Add reread, update, and avail commands based on Anders Quist's online_config_reload.diff patch. This patch extends the "add" and "drop" commands with automagical behavior::

      In supervisorctl:

      supervisor> status bar RUNNING pid 14864, uptime 18:03:42 baz RUNNING pid 23260, uptime 0:10:16 foo RUNNING pid 14866, uptime 18:03:42 gazonk RUNNING pid 23261, uptime 0:10:16 supervisor> avail bar in use auto 999:999 baz in use auto 999:999 foo in use auto 999:999 gazonk in use auto 999:999 quux avail auto 999:999

      Now we add this to our conf:

      [group:zegroup] programs=baz,gazonk

      Then we reread conf:

      supervisor> reread baz: disappeared gazonk: disappeared quux: available zegroup: available supervisor> avail bar in use auto 999:999 foo in use auto 999:999 quux avail auto 999:999 zegroup:baz avail auto 999:999 zegroup:gazonk avail auto 999:999 supervisor> status bar RUNNING pid 14864, uptime 18:04:18 baz RUNNING pid 23260, uptime 0:10:52 foo RUNNING pid 14866, uptime 18:04:18 gazonk RUNNING pid 23261, uptime 0:10:52

      The magic make-it-so command:

      supervisor> update baz: stopped baz: removed process group gazonk: stopped gazonk: removed process group zegroup: added process group quux: added process group supervisor> status bar RUNNING pid 14864, uptime 18:04:43 foo RUNNING pid 14866, uptime 18:04:43 quux RUNNING pid 23561, uptime 0:00:02 zegroup:baz RUNNING pid 23559, uptime 0:00:02 zegroup:gazonk RUNNING pid 23560, uptime 0:00:02 supervisor> avail bar in use auto 999:999 foo in use auto 999:999 quux in use auto 999:999 zegroup:baz in use auto 999:999 zegroup:gazonk in use auto 999:999

    • ๐Ÿ›  Fix bug with symptom "KeyError: 'process_name'" when using a logfile name including documentedprocess_name Python string expansions.

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

    • ๐Ÿ–จ Process config reloading implemented by Anders Quist. The supervisorctl program now has the commands "add" and "drop". "add " adds the process group implied by in the config file. "drop " removes the process group from the running configuration (it must already be stopped). This makes it possible to add processes to and remove processes from a running supervisord without restarting the supervisord process.

    • ๐Ÿ›  Fixed a bug where opening the HTTP servers would fail silently for socket errors other than errno.EADDRINUSE.

    • Thanks to Dave Peticolas, using "reload" against a supervisord that is running in the background no longer causes supervisord to crash.

    • ๐Ÿ”ง Configuration options for logfiles now accept mixed case reserved words (e.g. "AUTO" or "auto") for consistency with other options.

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

    • ๐Ÿ”ง Per-process exitcodes= configuration now will not accept exit codes that are not 8-bit unsigned integers (supervisord will not start 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 of process group: "fcgi-program". Adding one of these to your supervisord.conf allows you to control fastcgi programs. FastCGI programs cannot belong to heterogenous groups.

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

    [fcgi-program:fcgi_test] ;socket=tcp://localhost:8002 socket=unix:///path/to/fcgi/socket

    • ๐Ÿ”Œ Supervisorctl now supports a plugin model for supervisorctl commands.

    • โž• Added the ability to retrieve supervisord's own pid through supervisor.getPID() on the XML-RPC interface or a new "pid" command on supervisorctl.