flask_13_1:使用 supervisor 管理进程

本文转载自:使用 supervisor 管理进程

相比之前的博客,这一篇博客讲述的更加清晰简单。

 

使用 supervisor 管理进程

Supervisor是一个用 Python写的进程管理工具,可以很方便的用来启动、重启、关闭进程。除了对单个进程的控制,还可以同时启动、关闭多个进程,可以很方便的控制那些需要长期运行的进程,比如需要在服务器上长期运行的爬虫之类,会在程序出错以后自动重启。

1.安装

ubuntu下apt安装

sudo apt install supervisor

pip安装方式

sudo pip install supervisor

2.配置

创建配置文件
supervisor提供了一个快速产生配置文件的方法

echo_supervisord_conf > /etc/supervisord.conf

如果没有root权限可以使用

echo_supervisord_conf > supervisord.conf

在当前目录产生,然后用supervisor -c supervisord.conf来启动服务
查看 supervisord 是否在运行:

ps -aux | grep supervisord

3.应用配置

至此,supervisor已经安装完成,下面需要将应用添加进去,可以在刚刚的生成文件中直接添加命令,但是不推荐这么做,推荐使用以下的做法。
supervisor.conf中取消注释掉以下命令(一般位于结尾)

;[include]
;files = relative/directory/*.ini

改为

[include]
files = /etc/supervisor/*.ini

/etc目录下创建supervisor文件夹,在其下建立program.ini

[program:serialrecv]
directory = /home/jiang/program ; 程序的启动目录
command = python serialrecv.py  ; 运行的指令
autostart = true     ; 在 supervisord 启动的时候也自动启动
startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true   ; 程序异常退出后自动重启
startretries = 3     ; 启动失败自动重试次数,默认是 3
user = root          ; 用哪个用户启动
redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20     ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log

; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere

启动supervisor

sudo supervisord

监控应用运行情况

sudo supervisorctl

显示如下界面

supdervisor>

运行status可以看到应用运行状态,start <program name>可以启动应用,stop <program name>停止应用,start allstop all可以启动和停止所有应用。

4.问题

1.可能会遇到unix:///tmp/supervisor.sock not found,重新启动supervisordsudo supervisord即可
2.无法开机启动
/etc/rc.local添加启动命令sudo supervisordexit 0之前即可。

    0人点赞   Blogger    

作者:Pokerpoke
链接:https://www.jianshu.com/p/744f7f235a92
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
上一篇:通过c语言将代码运行结果导出到txt文件里


下一篇:python模块_subprocess