在 python3 中使用 Supervisor 的详细教程

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。

supervisor介绍

首先,介绍一下supervisor。Supervisor(http://supervisord.org) 是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制
环境:centos7.4

安装supervisor

pip install supervisor

因为是python开发的一个库,可以直接用pip来安装,很方便。
supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。

详情请看这篇文章:
https://www.jb51.net/article/235260.htm

[program:sougou]   #souogu 为程序的名称
command=scrapy crawl sougou #需要执行的命令
directory=/home/mzj/桌面/sougou/sougou/wechat_name/wechat_name/spiders  #命令执行的目录
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
user=root #用户
stopsignal=INT
autostart=true #是否自启动
autorestart=true #是否自动重启
startsecs=3 #自动重启时间间隔(s)
stderr_logfile=/home/mzj/桌面/sougou/sougou/wechat_name/wechat_name/spiders/ossoffical.err.log #错误日志文件
stdout_logfile=/home/mzj/桌面/sougou/sougou/wechat_name/wechat_name/spiders/ossoffical.out.log #输出日志文件

启动:

supervisord -c /etc/supervisor/supervisord.conf

实战使用

Supervisor 是一个进程管理工具,主要用于在 UNIX-like 系统上启动、停止和监控进程。它非常适合用于管理如 Web 服务器、后台任务处理程序等长时间运行的进程。以下是 Supervisor 的详细使用说明及示例:

1. 安装 Supervisor

在大多数 Linux 发行版中,你可以通过包管理器安装 Supervisor:

  • Debian/Ubuntu

    sudo apt-get update
    sudo apt-get install supervisor
  • CentOS/RHEL

    sudo yum install epel-release
    sudo yum install supervisor

2. 配置 Supervisor

Supervisor 的配置文件通常位于 /etc/supervisor/ 目录下,主配置文件是 /etc/supervisor/supervisord.conf。单个程序的配置文件放在 /etc/supervisor/conf.d/ 目录中。

示例配置

假设你有一个 Python 应用程序 myapp.py 需要管理。你可以创建一个配置文件 /etc/supervisor/conf.d/myapp.conf 来管理这个进程。配置文件的内容如下:

[program:myapp]
command=/usr/bin/python3 /path/to/myapp.py
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
user=myuser

配置说明

  • command:指定要启动的命令及其参数。
  • autostart:设置为 true 表示在 Supervisor 启动时自动启动该程序。
  • autorestart:设置为 true 表示当程序崩溃时自动重启。
  • stderr_logfile:指定标准错误输出日志文件路径。
  • stdout_logfile:指定标准输出日志文件路径。
  • user:指定以哪个用户身份运行程序。

3. 启动和管理进程

  • 启动 Supervisor

    sudo service supervisor start
  • 更新配置
    每次修改配置文件后,需要重新加载 Supervisor 的配置:

    sudo supervisorctl reread
    sudo supervisorctl update
  • 启动、停止、重启程序

    sudo supervisorctl start myapp
    sudo supervisorctl stop myapp
    sudo supervisorctl restart myapp
  • 查看程序状态

    sudo supervisorctl status

4. 使用 Supervisor 的 Web 界面(可选)

Supervisor 提供了一个可选的 Web 界面用于管理和监控进程。要启用 Web 界面,需要在 supervisord.conf 文件中添加如下配置:

[inet_http_server]
port=127.0.0.1:9001
username=user
password=pass
  • port:指定 Web 界面的监听端口。
  • usernamepassword:设置访问 Web 界面的用户名和密码。

配置完成后,重新启动 Supervisor 并访问 http://localhost:9001 来使用 Web 界面。

示例用例

假设你有一个 Django 项目,你可以使用 Supervisor 来管理 Django 的 runserver 进程。创建配置文件 /etc/supervisor/conf.d/django.conf

[program:django]
command=/path/to/your/venv/bin/python /path/to/your/project/manage.py runserver 0.0.0.0:8000
directory=/path/to/your/project/
autostart=true
autorestart=true
stderr_logfile=/var/log/django.err.log
stdout_logfile=/var/log/django.out.log
user=youruser

步骤

  1. 保存配置文件。
  2. 更新 Supervisor 配置:
    sudo supervisorctl reread
    sudo supervisorctl update
  3. 启动 Django 应用:
    sudo supervisorctl start django

通过这些步骤,你可以有效地管理和监控你的进程。Supervisor 的配置灵活且功能强大,是长时间运行的服务和后台任务管理的理想选择。


相关文章:
官网 | supervisord
在python3中使用Supervisor的详细教程

为者常成,行者常至