Python项目高效管理:Supervisor全攻略

Supervisor 是一个进程管理工具,可以用于管理和监控进程,特别是在 Linux 和 Unix 系统中。在 Python 中使用 Supervisor,通常的用途是通过 supervisord 启动和管理你的 Python 应用。

https://github.com/Supervisor/supervisor
在这里插入图片描述

下面是如何在 Python 项目中使用 Supervisor 的步骤:

1. 安装 Supervisor

你可以通过 pip 安装 supervisor

pip install supervisor

2. 配置 supervisord 配置文件

supervisor 的配置文件通常位于 /etc/supervisord.conf 或你自己指定的路径。你可以创建一个新的配置文件来配置 supervisord 启动 Python 应用。

例如,在项目根目录下创建一个配置文件 supervisord.conf

[unix_http_server]
file=/tmp/supervisor.sock   ; Unix socket file for communication with supervisorctl

[supervisord]
logfile=/var/log/supervisord.log ; Log file
pidfile=/var/run/supervisord.pid ; PID file
childlogdir=/var/log         ; Log for child processes

[program:myapp]
command=python3 /path/to/your/app.py  ; Your Python application
autostart=true       ; Start the app when supervisor starts
autorestart=true     ; Restart the app if it crashes
stderr_logfile=/var/log/myapp.err.log ; Error log file
stdout_logfile=/var/log/myapp.out.log ; Output log file
environment=ENV_VAR=value ; Environment variables, if needed

这里的配置项说明:

  • [unix_http_server]: 用于定义与 supervisord 通信的 Unix Socket 地址。

  • [supervisord]: 定义 supervisord 的主配置,控制日志、PID 文件等。

  • [program:myapp]: 这是你配置的 Python 应用程序的定义。

    • command: 启动你的 Python 程序的命令。
    • autostart: 启动时自动启动该程序。
    • autorestart: 如果程序崩溃,自动重启它。
    • stderr_logfilestdout_logfile: 定义标准输出和错误日志的存储路径。
    • environment: 设置环境变量,如果有需要的话。

3. 启动 supervisord

通过以下命令启动 supervisord,并加载你配置的 supervisord.conf 文件:

supervisord -c /path/to/your/supervisord.conf

这将启动 supervisord 并使其开始管理配置中定义的进程。

4. 管理进程

你可以使用 supervisorctl 来管理启动的进程:

  • 查看所有进程的状态:

    supervisorctl status
    
  • 启动一个进程:

    supervisorctl start myapp
    
  • 停止一个进程:

    supervisorctl stop myapp
    
  • 重启一个进程:

    supervisorctl restart myapp
    

5. 配置为开机自启动

为了让 supervisord 在系统启动时自动启动,你可以配置系统的服务管理器(如 systemdinit.d)来启动 supervisord

对于 systemd,你可以创建一个服务文件,例如 /etc/systemd/system/supervisord.service

[Unit]
Description=Supervisor process control system and service
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -c /path/to/your/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl shutdown
Restart=always

[Install]
WantedBy=multi-user.target

然后使用 systemctl 启动并设置为开机自启动:

systemctl start supervisord
systemctl enable supervisord

6. 检查日志

检查应用程序的日志以确认它是否正常工作:

tail -f /var/log/myapp.out.log
tail -f /var/log/myapp.err.log

总结

使用 Supervisor 可以有效地管理和监控 Python 应用,确保它们在系统启动时自动运行,并在崩溃时重新启动。通过配置 supervisord.conf 文件,你可以非常灵活地控制进程的启动、停止、重启等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值