Supervisor 监控 Python 服务

使用 Supervisor 来监控并自动重启 Python 应用。以下是配置步骤:

1. 安装 Supervisor

#ubuntu
sudo apt update
sudo apt install supervisor

#centos
sudo yum update
sudo yum install supervisor

2. 创建 Supervisor 配置文件

在 /etc/supervisor/conf.d/ 目录下创建一个配置文件(例如 kg.conf):

vi /etc/supervisor/conf.d/kg.conf,将以下内容写入配置文件:

[program:kg_ai_service2]
command=python3 /home/iot/wh/kg/run.py  ; 运行命令
directory=/home/iot/wh/kg               ; 工作目录
user=iot                                            ; 运行用户
autostart=true                                      ; 是否随 Supervisor 启动
autorestart=true                                    ; 自动重启
startretries=3                                      ; 启动失败时的重试次数
startsecs=10                                        ; 启动 10 秒后无异常则视为正常
stderr_logfile=/var/log/kg_err.log      ; 错误日志路径
stdout_logfile=/var/log/kg_out.log      ; 输出日志路径
environment=PYTHONPATH="/home/iot/wh/kg" ; 环境变量(可选)

方法1:直接使用虚拟环境的 Python 路径

[program:kg]
command=/root/python/uie/bin/python /home/iot/wh/kg/run.py
directory=/home/iot/wh/kg
user=root  # 如果虚拟环境在 /root 目录下,可能需要使用 root 用户
autostart=true
autorestart=true
startretries=3
startsecs=10
stderr_logfile=/var/log/kg_err.log
stdout_logfile=/var/log/kg_out.log
environment=PYTHONPATH="/home/iot/wh/kg"

方法2:使用 bash -c 激活虚拟环境


[program:kg]
command=bash -c 'source /root/python/uie/bin/activate && python /root/wh/kg/run.py'
directory=/root/wh/kg
user=root
autostart=true
autorestart=true
startretries=3
startsecs=10
stopwaitsecs=60
stopsignal=TERM
stdout_logfile=/var/log/supervisor/kg_out.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=10
stderr_logfile=/var/log/supervisor/kg_err.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=10
environment=
PYTHONPATH="/root/wh/kg:/root/python/uie/lib/python3.X/site-packages",PATH="/root/python/uie/bin:%(ENV_PATH)s"

方法3:使用虚拟环境中的 python 并添加路径

[program:kg_ai_service2]
command=/root/python/uie/bin/python /home/iot/wh/kg_ai_service2/run.py
directory=/home/iot/wh/kg_ai_service2
user=root
autostart=true
autorestart=true
startretries=3
startsecs=10
stderr_logfile=/var/log/kg_ai_service2.err.log
stdout_logfile=/var/log/kg_ai_service2.out.log
environment=HOME="/root",PYTHONPATH="/home/iot/wh/kg_ai_service2",PATH="/root/python/uie/bin:%(ENV_PATH)s"

 

3. 重新加载 Supervisor 配置

# 更新 Supervisor 配置
sudo supervisorctl reread
sudo supervisorctl update

# 启动服务
sudo supervisorctl start kg

# 查看服务状态
sudo supervisorctl status kg

# 查看服务日志
sudo tail -f /var/log/kg_out.log

4. 管理应用

# 查看所有服务状态
sudo supervisorctl status

# 重启服务
sudo supervisorctl restart kg

# 停止服务
sudo supervisorctl stop kg

# 重新启动所有服务
sudo supervisorctl reload

# 查看 Supervisor 日志
sudo tail -f tail -f /var/log/kg_out.log

 

posted on 2025-12-17 17:05  uestc2007  阅读(2)  评论(0)    收藏  举报

导航