name =
script-path-and-args =
execute-path =
python-path =
[program:<name>]
; process_name=<name> ; 默认就是 program 名称
command = python <script-path-and-args>
directory = <execute-path> ; 执行路径
environment=PYTHONPATH=<python-path> ; 设置环境变量,逗号隔开
; user=
; killasgroup = false ; 没用过
stopasgroup = true ; 杀掉子进程,文档说是包含 killasgroup
; stopsignal=TERM ; TERM, HUP, INT, QUIT, KILL, USR1, or USR2 中的一个
stopwaitsecs = 15
autostart = true
autorestart = true ; true, false, unexpected
; exitcodes=0,2 ; 允许的退出码,否则会进入自动重启判断
; startretries = 3 ; 重启次数
numprocs=1
numprocs_start=0
loglevel = debug ; critical, error, warn, info, debug, trace, blather
redirect_stderr = true
stdout_logfile = /var/log/<name>.log
stderr_logfile = /var/log/<name>.log
; stdout_logfile_maxbytes=1MB
; stdout_logfile_backups=10
; stdout_capture_maxbytes=1MB
; stdout_events_enabled=false
; stderr_logfile_maxbytes=1MB
; stderr_logfile_backups=10
; stderr_capture_maxbytes=1MB
; stderr_events_enabled=false
; 没用过
; umask=022
; priority=999
; serverurl=AUTO
另外,文档中看到一处有意思的用法,配置可以这样通过参数传递给进程:
[program:example]
command=/usr/bin/example --loglevel=%(ENV_LOGLEVEL)s
- 简单多进程就让 supervisor 控制
- 进程日志由进程自己控制,supervisor 只记录本身的运行与监控日志和进程漏出来的错误日志等。