Supervisor多进程管理

新增应用自启动配置

在 etc 的目录 找到 supervisord.d/ 文件夹 在文件夹下创建 conf 文件夹

mkdir conf


进入 conf 文件夹
创建应用的 .conf 文件 名称自己取(直接在 supervisord.d/ 也可以直接创建配置文件)

touch web-api.conf


进入 web-api.conf 文件进行编辑

vi web-api.conf


添加如下配置

[program:web-api]
command= python3 main.py  ; 启动命令
directory=/home/web-api  ; 应用程序根目录
autostart=true  ; 自动启动
autorestart=true  ; 自动重启
stderr_logfile=/home/web-api/error.log  ; 错误日志文件路径
stdout_logfile=/home/web-api/output.log  ; 输出日志文件路径
environment=TZ="Asia/Shanghai"  ; 应用程序时区

使用项目venv虚拟环境

[program:web-api]
command=/bin/bash -c "source venv/bin/activate && venv/bin/python main.py"
directory=/home/web-api
autostart=true
autorestart=true
stderr_logfile=/home/web-api/error.log
stdout_logfile=/home/web-api/output.log
virtualenv=venv
environment=TZ="Asia/Shanghai"
更新应用配置命令
重新读取配置
supervisorctl reread
更新配置
supervisorctl update
 
我一般更新了.conf 的配置 两个命令都会输入一遍
 
再输入命令查看应用是否启动成功了
ps -ef|grep web-api
 
如果启动了 使用命令把应用进程杀掉
kill -9 进程号
 
再次输入ps -ef|grep web-api 命令查看应用是否自启动了
如果自动了 supervisord 配置也就完成了
子进程reload

如果不指定子服务名称,默认重新启动所有的子服务列表。指定子服务名,仅仅重启当前子服务,其它服务不受影响。所有子服务是指不管配置是否发生修改,都会重启。

# 刷新服务列表
supervisorctl reload
子服务update

重启所有配置发生更改的子服务(包含新增子服务),配置未发生变化的子服务不重启。

# 刷新服务列表
supervisorctl update
进程管理运行

此种方式管理子进程颗粒度更小。

# 启动指定服务
supervisorctl start program_name
# 停止指定服务
supervisorctl stop program_name
# 重启指定服务
supervisorctl restart program_name
# 启动所有服务
supervisorctl start all
# 停止所有服务
supervisorctl stop all

News article is edited by: Caesar - 2023-10-7, 11:09

文章作者: Caesar
文章链接: https://pcnto.com/daily-learning/51-supervisor-multi-process-management.html
版权声明: 本博客所有文章除特别声明外,转载请注明来自 Peng blog

如果您喜欢本站,你可以点击主页广告以示支持,谢谢。

广告是本站收益的来源希望您能够谅解。