Supervisor管理python进程
supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启
supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启,但它不能管理原本就是daemon的进程。
安装supervisor
可以使用系统软件管理工具yum、apt-get等工具安装superivisor,也可以直接使用pip安装。
yum安装
# 安装supervisor
sudo yum install epel-release
sudo yum install -y supervisor
# 设置开机启动
sudo systemctl enable supervisord
sudo systemctl start supervisord
sudo systemctl status supervisord
pip安装
pip install supervisor
安装好以后,需要生成一份配置文件
echo_supervisord_conf > /etc/supervisord.conf
supervisord
运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
supervisorctl
命令行管理工具,可以用来执行 stop、start、restart、reload 等命令,来对这些子进程进行管理。
supervisor是所有进程的父进程,管理着启动的子进展,supervisor以子进程的PID来管理子进程,当子进程异常退出时supervisor可以收到相应的信号量。
status # 查看进程状态
stop project_name # 终止某个进程
start project_name # 启动某个进程
restart project_name # 重启某个进程
reread # 更新配置,根据最新的配置启动程序,会启动已经运行的程序
update # 更新配置,重启配置有变化的进程,不会重启那些配置没有变化的进程
reload # 重启并重启加载所有配置
管理python进程
[program:py-app]
command=/bin/bash -c "source /opt/mambaforge/bin/activate base && python /data/apps/python/py-app.py"
environment=HOME="/home/yearnfar"
autostart=true
autorestart=true
startsecs=5
killasgroup=true
stopasgroup=true
stderr_logfile=/var/log/supervisor/py-app.log
stdout_logfile=/var/log/supervisor/py-app.log
- 使用mamba管理python环境需要
source /opt/mambaforge/bin/activate base
激活虚拟环境。 - 因为python使用了
os.path
需要设置HOME环境变量 - 因为代码里面使用了
multiprocess
需要设置killasgroup
、stopasgroup
才能在关闭时关闭子进程。
最后修改于 2023-01-03
此篇文章的评论功能已经停用。