Преглед на файлове

*** empty log message ***

Chris McDonough преди 18 години
родител
ревизия
4e85428d2d
променени са 2 файла, в които са добавени 145 реда и са изтрити 39 реда
  1. 145 35
      README.txt
  2. 0 4
      TODO.txt

+ 145 - 35
README.txt

@@ -62,6 +62,9 @@ Introduction
      assign priorities to processes, and allows user to emit commands
      assign priorities to processes, and allows user to emit commands
      via the supervisorctl client like "start all", and "restart all",
      via the supervisorctl client like "start all", and "restart all",
      which starts them in the preassigned priority order.
      which starts them in the preassigned priority order.
+     Additionally, processes can be grouped into "process groups" and
+     a set of logically related processes can be stopped and started
+     as a unit.
 
 
 Supported Platforms
 Supported Platforms
 
 
@@ -385,8 +388,8 @@ Configuration File '[program:x]' Section Settings
   bar"').  Note that the value of 'command' may include Python string
   bar"').  Note that the value of 'command' may include Python string
   expressions, e.g. "/path/to/programname --port=80%(process_num)02d"
   expressions, e.g. "/path/to/programname --port=80%(process_num)02d"
   might expand to "/path/to/programname --port=8000" at runtime.
   might expand to "/path/to/programname --port=8000" at runtime.
-  String expressions are evaluated against a dictionary containing
-  "group_name", "process_num" and "program_name".  **Controlled
+  String expressions are evaluated against a dictionary containing the
+  keys "group_name", "process_num" and "program_name".  **Controlled
   programs should themselves not be daemons, as supervisord assumes it
   programs should themselves not be daemons, as supervisord assumes it
   is responsible for daemonizing its subprocesses (see "Nondaemonizing
   is responsible for daemonizing its subprocesses (see "Nondaemonizing
   of Subprocesses" later in this document).**
   of Subprocesses" later in this document).**
@@ -396,13 +399,13 @@ Configuration File '[program:x]' Section Settings
   need to worry about setting this unless you change 'numprocs'.  The
   need to worry about setting this unless you change 'numprocs'.  The
   string expression is evaluated against a dictionary that includes
   string expression is evaluated against a dictionary that includes
   "group_name", "process_num" and "program_name".  Default:
   "group_name", "process_num" and "program_name".  Default:
-  %(program_name)s.
+  %(program_name)s.  (New in 3.0)
 
 
   'numprocs' -- Supervisor will start as many instances of this
   'numprocs' -- Supervisor will start as many instances of this
   program as named by numprocs.  Note that if numprocs > 1, the
   program as named by numprocs.  Note that if numprocs > 1, the
   'process_name' expression must include '%(process_num)s' (or any
   'process_name' expression must include '%(process_num)s' (or any
   other valid Python string expression that includes 'process_num')
   other valid Python string expression that includes 'process_num')
-  within it.  Default: 1.
+  within it.  Default: 1.  (New in 3.0)
 
 
   'priority' -- the relative priority of the program in the start and
   'priority' -- the relative priority of the program in the start and
   shutdown ordering.  Lower priorities indicate programs that start
   shutdown ordering.  Lower priorities indicate programs that start
@@ -447,67 +450,174 @@ Configuration File '[program:x]' Section Settings
 
 
   'user' -- If supervisord is running as root, this UNIX user account
   'user' -- If supervisord is running as root, this UNIX user account
   will be used as the account which runs the program.  If supervisord
   will be used as the account which runs the program.  If supervisord
-  is not running as root, this option has no effect.  Defaut: do not
+  is not running as root, this option has no effect.  Default: do not
   switch users.
   switch users.
 
 
   'redirect_stderr' -- If true, cause the process' stderr output to be
   'redirect_stderr' -- If true, cause the process' stderr output to be
   sent back to supervisor on it's stdout file descriptor (in UNIX
   sent back to supervisor on it's stdout file descriptor (in UNIX
   shell terms, this is the equivalent of executing "/the/program
   shell terms, this is the equivalent of executing "/the/program
-  2>&1". Default: false.
+  2>&1". Default: false.  (New in 3.0, replaces 2.0's "log_stdout" and
+  "log_stderr")
 
 
   'stdout_logfile' -- Put process stdout output in this file (and if
   'stdout_logfile' -- Put process stdout output in this file (and if
   redirect_stderr is true, also place stderr output in this file).  If
   redirect_stderr is true, also place stderr output in this file).  If
   'stdout_logfile' is unset or set to 'AUTO', supervisor will
   'stdout_logfile' is unset or set to 'AUTO', supervisor will
   automatically choose a file location.  If this is set to 'NONE',
   automatically choose a file location.  If this is set to 'NONE',
   supervisord will create no log file.  AUTO log files and their
   supervisord will create no log file.  AUTO log files and their
-  backups will be deleted when supervisord restarts.  Default: AUTO.
+  backups will be deleted when supervisord restarts.  The
+  stdout_logfile value can contain Python string expressions that will
+  evaluated against a dictionary that contains the keys "process_num",
+  "program_name" and "group_name".  Default: AUTO.  (New in 3.0,
+  replaces 2.0's "logfile")
 
 
   'stdout_logfile_maxbytes' -- The maximum number of bytes that may be
   'stdout_logfile_maxbytes' -- The maximum number of bytes that may be
   consumed by stdout_logfile before it is rotated (suffix multipliers
   consumed by stdout_logfile before it is rotated (suffix multipliers
   like "KB", "MB", and "GB" can be used in the value).  Set this value
   like "KB", "MB", and "GB" can be used in the value).  Set this value
-  to 0 to indicate an unlimited log size.  Default: 50MB.
+  to 0 to indicate an unlimited log size.  Default: 50MB.  (New in
+  3.0, replaces 2.0's "logfile_maxbytes")
 
 
   'stdout_logfile_backups' -- The number of stdout_logfile backups to
   'stdout_logfile_backups' -- The number of stdout_logfile backups to
   keep around resulting from process stdout log file rotation.  Set
   keep around resulting from process stdout log file rotation.  Set
   this to 0 to indicate an unlimited number of backups.  Default: 10.
   this to 0 to indicate an unlimited number of backups.  Default: 10.
-
-  'stdout_capturefile' -- file written to when process is in "stdout
-  capture mode" (see "Capture Mode and Process Communication Events"
-  later in this document).  May be a file path, NONE, or AUTO.
-  Default: AUTO.
+  (New in 3.0, replaces "logfile_backups") 'stdout_capturefile' --
+  file written to when process is in "stdout capture mode" (see
+  "Capture Mode and Process Communication Events" later in this
+  document).  May be a file path, NONE, or AUTO.  The
+  stdout_capturefile value can contain Python string expressions that
+  will evaluated against a dictionary that contains the keys
+  "process_num", "program_name" and "group_name".  Default: AUTO.
+  (New in 3.0, replaces 2.0's "logfile_backups")
 
 
   'stderr_logfile' -- Put process stderr output in this file unless
   'stderr_logfile' -- Put process stderr output in this file unless
   redirect_stderr is true.  Accepts the same value types as
   redirect_stderr is true.  Accepts the same value types as
-  "stdout_logfile".  Default: AUTO.
+  "stdout_logfile" and may contain the same Python string expressions.
+  Default: AUTO.  (New in 3.0)
 
 
   'stderr_logfile_maxbytes' -- The maximum number of bytes before
   'stderr_logfile_maxbytes' -- The maximum number of bytes before
   logfile rotation for stderr_logfile.  Accepts the same value types
   logfile rotation for stderr_logfile.  Accepts the same value types
-  as "stdout_logfile_maxbytes".  Default: 50MB.
+  as "stdout_logfile_maxbytes".  Default: 50MB.  (New in 3.0)
 
 
   'stderr_logfile_backups' -- The number of backups to keep around
   'stderr_logfile_backups' -- The number of backups to keep around
-  resulting from process stderr log file rotation.  Default: 10.
+  resulting from process stderr log file rotation.  Default: 10.  (New
+  in 3.0)
 
 
   'stderr_capturefile' -- file written to when process is in "stderr
   'stderr_capturefile' -- file written to when process is in "stderr
   capture mode" (see "Capture Mode and Process Communication Events"
   capture mode" (see "Capture Mode and Process Communication Events"
-  later in this document).  May be a file path, NONE, or AUTO.
-  Default: AUTO.
+  later in this document).  May contain the same Python string
+  expressions as "stdout_capturefile". May be a file path, NONE, or
+  AUTO.  Default: AUTO.  (New in 3.0)
 
 
   'environment' -- A list of key/value pairs in the form
   'environment' -- A list of key/value pairs in the form
   "KEY=val,KEY2=val2" that will be placed in the child process'
   "KEY=val,KEY2=val2" that will be placed in the child process'
-  environment.  Default: none.  **Note** that the subprocess will
-  inherit the environment variables of the shell used to start
-  "supervisord" except for the ones overridden here.  See "Subprocess
-  Environment" below.
+  environment.  The environment string may contain Python string
+  expressions that will be evaluated against a dictionary containing
+  "process_num", "program_name" and "group_name".  Default: none.
+  **Note** that the subprocess will inherit the environment variables
+  of the shell used to start "supervisord" except for the ones
+  overridden here.  See "Subprocess Environment" below.
+
+  Note that a '[program:x]' section actually represents a "homogeneous
+  process group" to supervisor (new in 3.0).  The members of the group
+  are defined by the combination of the 'numprocs and 'process_name'
+  parameters in the configuration.  By default, if numprocs and
+  process_name are left unchanged from their defaults, the group
+  represented by '[program:x]' will hae a single process named 'x' in
+  it.  This provides a modicum of backwards compatibility with older
+  supervisor releases, which did not treat program sections as
+  homogeneous process group defnitions.
+
+  But for instance, if you have a '[program:foo]' section with a
+  'numprocs' of 3 and a 'process_name' expression of
+  '%(program_name)s_%(process_num)02d', the "foo" group will contain
+  three processes, named 'foo_00', 'foo_01', and 'foo_02'.  This makes
+  it possible to start a number of very similar processes using a
+  single '[program:x]' section.  All logfile names, all environment
+  strings, and the command of programs can also contain similar Python
+  string expressions, to pass slightly different parameters to each
+  process.
+
+Configuration File '[group:x]' Section Settings (New in 3.0)
+
+  It is often useful to group "homogeneous" processes groups (aka
+  "programs") together into a "heterogeneous" process group so they
+  can be controlled as a unit from supervisor's various controller
+  interfaces.
+
+  To place programs into a group so you can treat them as a unit,
+  define a '[group:x]' section in your configuration file, e.g.::
+
+    [group:foo]
+    programs=bar,baz
+    priority=999
+
+  For the example above to work, there must be two 'program' sections
+  elsewhere in your configuration file: '[program:bar]' and
+  '[program:baz]'.  If "homogeneous" program groups" (represented by
+  program sections) are placed into a "heterogeneous" group via
+  '[group:x]' section's "programs=" line, the homogeneous groups that
+  are implied by the program section will not exist at runtime in
+  supervisor.  Instead, all processes belonging to each of the
+  homogeneous groups will be placed into the heterogeneous group.  In
+  the above example, it means that the 'bar' and 'baz' homogeneous
+  groups will not exist, and the processes that would have been under
+  them will now be moved into the 'foo' group.
+
+Configuration File '[eventlistener:x]' Section Settings (New in 3.0)
+
+  Supervisor allows specialized homogeneous process groups ("event
+  listener pools") to be defined within the configuration file.  These
+  pools contain processes that are meant to receive and respond to
+  event notifications from supervisor's event system.  Eee "Supervisor
+  Events" elsewhere in this document for an explanation of how events
+  work and how to implement event listener programs.
+
+  An example of an eventlistener section defined within a supervisor
+  configuration file, which creates a pool::
+
+    [eventlistener:theeventlistenername]
+    command=/bin/eventlistener
+    process_name=%(program_name)s_%(process_num)02d
+    numprocs=5
+    events=PROCESS_STATE_CHANGE
+    buffer_size=10
+    priority=-1
+    autostart=true
+    autorestart=true
+    startsecs=1
+    startretries=3
+    exitcodes=0,2
+    stopsignal=QUIT
+    stopwaitsecs=10
+    user=chrism
+    redirect_stderr=true
+    stdout_logfile=/a/path
+    stdout_logfile_maxbytes=1MB
+    stdout_logfile_backups=10
+    stderr_logfile=/a/path
+    stderr_logfile_maxbytes=1MB
+    stderr_logfile_backups
+    environment=A=1,B=2
 
 
-Configuration File '[group:x]' Section Settings
+  Note that all the options available to '[program:x]' sections are
+  respected by eventlistener sections except for "stdout_capturefile"
+  and "stderr_capturefile" (event listeners cannot emit process
+  communication events, see "Capture Mode and Process Communication
+  Events" elsewhere in this document).
 
 
-  XXX TODO
+  '[eventlistener:x]' sections have two keys which '[program:x]'
+  sections do not have:
 
 
-Configuration File '[eventlistener:x]' Section Settings
+  'buffer_size' -- The event listener pool's event queue buffer size.
+  When a listener pool's event buffer is overflowed (as can happen
+  when an event listener pool cannot keep up with all of the events
+  sent to it), the oldest event in the buffer is discarded.
 
 
-  XXX TODO
+  'events' -- A comma-separated list of event type names that this
+  listener is "interested" in receiving notifications for (see
+  "Supervisor Events" elsewhere in this document for a list of valid
+  event type names).
 
 
-Configuration File '[rpcinterface:x]' Section Settings (ADVANCED)
+Configuration File '[rpcinterface:x]' Section Settings (ADVANCED, New in 3.0)
 
 
   Changing "rpcinterface:x" settings in the configuration file is only
   Changing "rpcinterface:x" settings in the configuration file is only
   useful for people who wish to extend supervisor with additional
   useful for people who wish to extend supervisor with additional
@@ -519,10 +629,10 @@ Configuration File '[rpcinterface:x]' Section Settings (ADVANCED)
    [rpcinterface:supervisor]
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.xmlrpc:make_main_rpcinterface
    supervisor.rpcinterface_factory = supervisor.xmlrpc:make_main_rpcinterface
 
 
-  This section must remain in the configuration for the standard setup
-  of supervisor to work properly.  If you don't want supervisor to do
-  anything it doesn't already do out of the box, this is all you need
-  to know about this type of section.
+  This section *must* remain in the configuration for the standard
+  setup of supervisor to work properly.  If you don't want supervisor
+  to do anything it doesn't already do out of the box, this is all you
+  need to know about this type of section.
 
 
   However, if you wish to add rpc interface namespaces to a custom
   However, if you wish to add rpc interface namespaces to a custom
   version of supervisor, you may add additional [rpcinterface:foo]
   version of supervisor, you may add additional [rpcinterface:foo]
@@ -594,7 +704,7 @@ Subprocess Environment
 
 
     ... supervisor-specific environment variables
     ... supervisor-specific environment variables
      ("SUPERVISOR_ENABLED", "SUPERVISOR_PROCESS_NAME",
      ("SUPERVISOR_ENABLED", "SUPERVISOR_PROCESS_NAME",
-     "SUPERVISOR_GROUP_NAME") ..
+     "SUPERVISOR_GROUP_NAME") ..  (New in 3.0)
 
 
     ... added-to/overridden-by ...
     ... added-to/overridden-by ...
 
 
@@ -737,7 +847,7 @@ Process States
   All other state transitions are managed by supervisord
   All other state transitions are managed by supervisord
   automatically.
   automatically.
 
 
-Supervisor Events
+Supervisor Events (New in 3.0)
 
 
   At certain predefined points during supervisord's operation, "event
   At certain predefined points during supervisord's operation, "event
   notifications" are emitted.  An event notification implies that
   notifications" are emitted.  An event notification implies that
@@ -880,7 +990,7 @@ Supervisor Events
       group_name: <name>
       group_name: <name>
       event_type: <type of discarded event>
       event_type: <type of discarded event>
 
 
-Event Listeners
+Event Listeners (New in 3.0)
 
 
   Supervisor event listeners are subprocesses which are treated almost
   Supervisor event listeners are subprocesses which are treated almost
   exactly like supervisor "programs" with the following differences:
   exactly like supervisor "programs" with the following differences:
@@ -1078,7 +1188,7 @@ Event Listener Error Conditions
   it.  If an event was being processed by the listener during this
   it.  If an event was being processed by the listener during this
   time, it will be rebuffered and sent again later.
   time, it will be rebuffered and sent again later.
 
 
-Capture Mode and Process Communication Events
+Capture Mode and Process Communication Events (New in 3.0)
 
 
   XXX TODO
   XXX TODO
 
 

+ 0 - 4
TODO.txt

@@ -1,9 +1,5 @@
 - Documentation extensions:
 - Documentation extensions:
 
 
-  - [group:x] documentation
-
-  - [eventlistener:x] documentation
-
   - Capture mode / process comm events documentation
   - Capture mode / process comm events documentation
 
 
 - Write "UPGRADING.txt" for people who are upgrading from supervisor
 - Write "UPGRADING.txt" for people who are upgrading from supervisor