伸缩自如的Flask [day 27] Supervisor

像gunicorn 及docker 有着执行时timeout的防止错误发生的机制,
但是要是超过了 timeout的设定,程序就不再运行的情况发生时,该怎麽办呢?

也许可以试一下Supervisor这个套件,官网的文件:

http://supervisord.org/introduction.html

安装:

sudo apt-get install supervisor

再来,可以看一下套件设定档的范例:

echo_supervisord_conf

https://ithelp.ithome.com.tw/upload/images/20210610/20122678VRaTeQssaH.png

可以将范例档存於目前的路径:

echo_supervisord_conf > supervisord.conf

未来使用该路径conf来运行:

sudo supervisord --configuration=/current/directory/path/supervisord.conf

如果使用预设在/etc/supervisor/supervisord.conf的档案来运行:

sudo supervisorctl reread
sudo service supervisor restart

那我们可以修改conf来进行设定:

[program:<app名称>]
directory=/home/username/<app名称>
command=gunicorn app:app -b 127.0.0.1:8000 --reload 
autostart=true
autorestart=true
stderr_logfile=/var/log/error.log
stdout_logfile=/var/log/output.log
  • directory: app所在位置
  • command:监控及重起时指令
  • autostart:supervisord启动时,执行程序
  • autorestart:程序没执行时,重新启动

可以参考的conf设定:


[unix_http_server]
file=/tmp/supervisor.sock 

[supervisord]
logfile=/tmp/supervisord.log 
logfile_maxbytes=50MB        
logfile_backups=10           
loglevel=info                
pidfile=/tmp/supervisord.pid 
nodaemon=false               
silent=false                 
minfds=1024                  
minprocs=200 

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock

[program:hello_api]
command=bash -c "source /home/wilson/miniconda3/bin/activate &&  gunicorn -w 4 main:app  -b 0.0.0.0:5000 --reload"
directory=/home/wilson/health/health_factory_api
autostart=true                ; start at supervisord start (default: true)
autorestart=true

设定完成,可以重新启动supervisor来监控服务。
藉由supervisorctl来查看是否监控成功:

sudo supervisorctl -c xxx.conf

<<:  k8s prometheus 监控多个MySql -盖完後的新增

>>:  Day 12 (Ai)

流程控制

选择语句 最简单的版本 if 表达式: 接下来需要做的...... 当然,前一章也看过了,也有els...

22.MYSQL NOT BETWEEN AND指令

除了有BETWEEN AND 之外,还有NOT BETWEEN AND (NOT BETWEEN A...

从 IT 技术面细说 Search Console 的 27 组数字 KPI (8) :KPI 层级

从 Search Console 可以获得的数字中,最重要的几个 KPI 如下: 外部 KPI:流量...

Day14 Vue directives(v-for)上

用v-for把阵列转成元素 一开始我们先把items的资料容给见出来 接下来呢我们用v-for=&q...

day3_精简指令集带给 arm 的优势与短板

指令集与执行的程序 看完後上一篇我们知道,指令集代表在 cpu 内预先准备好的动作代号,比如说 代号...