
当使用 supervisor 来管理 gunicorn 的时候,supervisor 配置文件 myapp.conf 中的 command 为:
gunicorn -w4 -b0.0.0.0:8000 run:app 注:这是一个 flask 项目
然后用命令 sudo supervisord -c myapp.conf 启动项目
此时可以查找多条 gunicorn 进程,同时测试接口可用
那么如何关闭这些 gunicorn 进程呢?
实测用 sudo supervisorctl -c myapp.conf stop myapp 命令可以使接口不可访问,但是那些 gunicorn 进程还是存在,当我再次重启 sudo supervisorctl -c myapp.conf start myapp 的时候,进程又多了四个。
我应该如何利用 supervisor 来关闭这些 gunicorn 进程呢?
1 xixijun 2018 年 11 月 2 日 supervisor 配置加个 killasgroup=true 试试 |
2 gaius 2018 年 11 月 2 日 手动杀了呗。。 |
3 neoblackcap 2018 年 11 月 2 日 你的 supervisord 针对 gunicorn 配置了多少个进程? 我也用过 supervisord 作为 gunicorn 的守护进程,没遇到你的问题 |
6 ingin OP @neoblackcap #3 文中写了 -w4, 您是怎么关闭 gunicorn 进程的呢 |
7 momo1999 2018 年 11 月 2 日 Try using exec gunicorn 搜了下 |
8 robinlovemaggie 2018 年 11 月 2 日 常识的问一句:为什么要 root 下跑你的程序? python 有用 pyenv 做版本隔离吗?程序依赖有用 venv 隔离吗?有在 dev 下测试过启动脚本吗? |
9 xiaowangwang92 2018 年 11 月 2 日 正常情况下是 sudo supervisorctl stop myapp 就可以 kill 掉 gunicorn 进程的,你可以查看下 sudo supervisorctl status 看一下状态。 |
10 ingin OP @xiaowangwang92 #9 当 stop myapp 时,状态是 close,但是 gunicorn 进程还在,start myapp 时,状态是 running,然后 gunicorn 进程新增了四个 |
11 xiaowangwang92 2018 年 11 月 2 日 @ingin 我觉得要么可能是 supervisor 配置的问题,要么是启动方式的问题,参考下这个 https://medium.com/ymedialabs-innovation/deploy-flask-app-with-nginx-using-gunicorn-and-supervisor-d7a93aa07c18 |
12 xiaowangwang92 2018 年 11 月 2 日 还有就是你说的多出来的 gunicorn 进程是不是你手动起的,忘记关掉了~~~ ^ _ ^ pkill gunicorn |
13 linnchord 2018 年 11 月 2 日 ``` [program:portal] directory=/var/www/portal command=/home/dev/.pyenv/versions/portal/bin/gunicorn --worker-class=gevent --max-requests 5000 -w 6 -b 127.0.0.1:8100 portal:app loglevel=info autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/log/portal.log user=dev stopsignal=TERM stdout_logfile_maxbytes=0 stdout_logfile_backups=0 ``` 通过 supervisorctl start|stop|restart 控制,启停的关键参数应该是 stopsignal=TERM |
14 neoblackcap 2018 年 11 月 2 日 @ingin 其实楼下的就说了,你改一下 stopsignal 应该就可以了,而且 gunicorn 不是有 supervisord 的配置范例吗? |