简述

supervisor本身就是由Python编写的,是一个很方便的进程管理工具;
搭建教程产考

使用

安装

1
pip3 install supervisor

搭建项目结构

  • 在项目的根目录下创建一个文件夹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
  • 查看运行状态
1
supervisorctl status
  • 常用的几个命令
status
stop test
start test
restart test
reread  #   读取有更新的配置文件
update  #   重启配置文件修改过的程序

关闭

supervisorctl shutdown