1.Supervisor简介
Supervisor是一个 Python 开发的client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程。它可以同时启动,关闭多个进程,使用起来特别的方便。supervisor 主要由两部分组成:
(1)supervisord(server 部分)
主要负责管理子进程,响应客户端命令以及日志的输出等;它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
(2)supervisorctl(client 部分)
命令行客户端,用户可以通过它与supervisord 进程联系,获取子进程的状态等。
2.Supervisor的安装和使用
(1)Supervisor的安装
pip install supervisor
(2)Supervisord的配置生成
安装了supervisor之后,可以使用echo_supervisord_conf工具来生成supervisord的默认配置,具体方法是:
echo_supervisord_conf > supervisord.conf。然后修改supervisord.conf配置文件,添加需要让Supervisor管理的的子进程的信息,例如子进程的启动命令、是否在子进程崩溃时帮其自动重启。例如在supervisord.conf中添加一个celeryd的服务:
[program:celeryd]
command=celery worker--app=task -l info ; 启动命令
stdout_logfile=/var/log/supervisor/celeryd_out.log; stdout 日志输出位置
stderr_logfile=/var/log/supervisor/celeryd_err.log; stderr 日志输出位置
autostart=true; 在 supervisord 启动的时候自动启动
autorestart=true ;程序异常退出后自动重启
startsecs=10; 启动 10 秒后没有异常退出,就当作已经正常启动
(3)启动Supervisord服务器进程
supervisord -c supervisord.conf
(4)使用supervisorctl客户端来操作被supervisor管理的子进程
supervisorctl stop/start/restart xxx #停止/启动/重启某一个进程xxx
supervisorctl reread #只载入最新的配置文件, 并不重启任何进程
supervisorctl reload #载入最新的配置文件,停止原来的所有进程并按新的配置启动管理所有进程
supervisorctl update #根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
学习资料参考于: