在 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 界面的监听端口。username和password:设置访问 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
步骤:
- 保存配置文件。
- 更新 Supervisor 配置:
sudo supervisorctl reread sudo supervisorctl update - 启动 Django 应用:
sudo supervisorctl start django
通过这些步骤,你可以有效地管理和监控你的进程。Supervisor 的配置灵活且功能强大,是长时间运行的服务和后台任务管理的理想选择。
相关文章:
官网 | supervisord
在python3中使用Supervisor的详细教程
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)