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
  1. 使用mamba管理python环境需要 source /opt/mambaforge/bin/activate base 激活虚拟环境。
  2. 因为python使用了os.path 需要设置HOME环境变量
  3. 因为代码里面使用了multiprocess 需要设置 killasgroupstopasgroup才能在关闭时关闭子进程。

最后修改于 2023-01-03

此篇文章的评论功能已经停用。