简述
supervisor本身就是由Python编写的,是一个很方便的进程管理工具;
搭建教程产考
使用
安装
搭建项目结构
- 在项目的根目录下创建一个文件夹supervisor来保存有关的文件
- 在supervisor文件夹下创建子文件夹configs,用来保存每个进程对应的配置文件
- 在项目中创建log文件夹来保存日志文件(如果有了就不用创建了)
- 在supervisor文件夹中创建supervisor.conf来保存主配置信息
配置文件(主)
这里为了方便写入笔记,将所有的注释都删除了,其实还有很多的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| [unix_http_server] file=%(here)s/supervisor.sock ; the path to the socket file chmod=0700 ; socket file mode (default 0700)
[supervisord] logfile=%(here)s/../log/supervisord.log ; supervisor自己启动的日子文件 logfile_maxbytes=50MB ; 日志文件大小 logfile_backups=10 ; 日志文件备份数量 loglevel=info ; log level; default info; others: debug,warn,trace pidfile=%(here)s/supervisord.pid ; 默认的路径会被Linux清理,修改为一个靠谱的路径 nodaemon=false ; start in foreground if true; default false minfds=1024 ; min. avail startup file descriptors; default 1024 minprocs=200 ; min. avail process descriptors;default 200 directory=%(here)s/.. ; default is not to cd during start
[rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl] serverurl=unix:///%(here)s/supervisor.sock ; 默认的路径会被Linux清理,修改为一个靠谱的路径
; [group:test] ; 分组管理进程 ; programs=test
[include] ; 引入不同进程的配置文件 files = %(here)s/configs/*.conf
|
进程独立的配置
在supervisor/configs下创建test.conf,这个配置文件中指定了进程运行的Python文件和日志文件路径
1 2 3 4 5 6 7
| [program:test] ;项目名称 directory = %(here)s/.. ; 程序的启动目录 command = python3 %(here)s/../../bin/Test.py ; 启动命令,可以看出与手动在命令行启动的命令是一样
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) stdout_logfile = %(here)s/../../log/%(program_name)s/%(program_name)s.log loglevel=info
|
启动与管理
- 启动supervisor:指定的test.py开始运行,这里要注意如果只是用print语句打印的日志不会立即写入到日志文件,而是在进程执行完成后写入,用logger写入的日志会动态更新
# 主配置文件
supervisord -c supervisord.conf
status
stop test
start test
restart test
reread # 读取有更新的配置文件
update # 重启配置文件修改过的程序
关闭
supervisorctl shutdown