Supervisor Changelog

New in version 3.0 Beta 2

July 1st, 2013
  • The behavior of the program option user has changed. In all previous versions, if supervisord failed to switch to the user, a warning would be sent to the stderr log but the child process would still be spawned. This means that a mistake in the config file could result in a child process being unintentionally spawned as root. Now, supervisord will not spawn the child unless it was able to successfully switch to the user. Thanks to Igor Partola for reporting this issue.
  • If a user specified in the config file does not exist on the system, supervisord will now print an error and refuse to start.
  • Reverted a change to logging introduced in 3.0b1 that was intended to allow multiple processes to log to the same file with the rotating log handler. The implementation caused supervisord to crash during reload and to leak file handles. Also, since log rotation options are given on a per-program basis, impossible configurations could be created (conflicting rotation options for the same file). Given this and that supervisord now has syslog support, it was decided to remove this feature. A warning was added to the documentation that two processes may not log to the same file.
  • Fixed a bug where parsing command= could cause supervisord to crash if shlex.split() fails, such as a bad quoting. Patch by Scott Wilson.
  • It is now possible to use supervisorctl on a machine with no supervisord.conf file by supplying the connection information in command line options. Patch by Jens Rantil.
  • Fixed a bug where supervisord would crash if the syslog handler was used and supervisord received SIGUSR2 (log reopen request).
  • Fixed an XML-RPC bug where calling supervisor.getProcessInfo() with a bad name would cause a 500 Internal Server Error rather than the returning a BAD_NAME fault.
  • Added a favicon to the web interface. Patch by Caio Ariede.
  • Fixed a test failure due to incorrect handling of daylight savings time in the childutils tests. Patch by Ildar Hizbulin.
  • Fixed a number of pyflakes warnings for unused variables, imports, and dead code. Patch by Philippe Ombredanne.

New in version 3.0 Beta 1 (September 12th, 2012)

  • Fixed a bug where parsing environment= did not verify that key/value pairs were correctly separated. Patch by Martijn Pieters.
  • Fixed a bug in the HTTP server code that could cause unnecessary delays when sending large responses. Patch by Philip Zeyliger.
  • When supervisord starts up as root, if the -c flag was not provided, a warning is now emitted to the console. Rationale: supervisord looks in the current working directory for a supervisord.conf file; someone might trick the root user into starting supervisord while cd'ed into a directory that has a rogue supervisord.conf.
  • A warning was added to the documentation about the security implications of starting supervisord without the -c flag.
  • Add a boolean program option stopasgroup, defaulting to false. When true, the flag causes supervisor to send the stop signal to the whole process group. This is useful for programs, such as Flask in debug mode, that do not propagate stop signals to their children, leaving them orphaned.
  • Python 2.3 is no longer supported. The last version that supported Python 2.3 is Supervisor 3.0a12.
  • Removed the unused "supervisor_rpc" entry point from
  • Fixed a bug in the rotating log handler that would cause unexpected results when two processes were set to log to the same file. Patch by Whit Morriss.
  • Fixed a bug in config file reloading where each reload could leak memory because a list of warning messages would be appended but never cleared. Patch by Philip Zeyliger.
  • Added a new Syslog log handler. Thanks to Denis Bilenko, Nathan L. Smith, and Jason R. Coombs, who each contributed to the patch.
  • Put all change history into a single file (CHANGES.txt).

New in version 3.0 Alpha 12 (December 7th, 2011)

  • Released to replace a broken 3.0a11 package where non-Python files were not included in the package.

New in version 3.0 Alpha 10 (March 31st, 2011)

  • Fixed the stylesheet of the web interface so the footer line won't overlap a long process list. Thanks to Derek DeVries for the patch.
  • Allow rpc interface plugins to register new events types.
  • Bug fix for FCGI sockets not getting cleaned up when the reload command is issued from supervisorctl. Also, the default behavior has changed for FCGI sockets. They are new closed whenever the number ofrunning processes in a group hits zero. Previously, the sockets were kept open unless a group-level stop command was issued.
  • Better error message when HTTP server cannot reverse-resolve a hostname to an IP address. Previous behavior: show a socket error. Current behavior: spit out a suggestion to stdout.
  • Environment variables set via environment= value within
  • [supervisord] section had no effect. Thanks to Wyatt Baldwin for a patch.
  • Fix bug where stopping process would cause process output that happened after the stop request was issued to be lost. See
  • Moved 2.X change log entries into HISTORY.txt.
  • Converted CHANGES.txt and README.txt into proper ReStructuredText and included them in the long_description in
  • Added a tox.ini to the package (run via tox in the package dir). Tests supervisor on multiple Python versions.