美文网首页
Flask + Gunicorn + Gevent

Flask + Gunicorn + Gevent

作者: hjm1fb | 来源:发表于2023-06-27 14:39 被阅读0次
# 这里的__name__,如果是直接跑这个文件来启动app,则是__main__
# 如果是通过其他项目,比如Gunicorn来运行本文件来启动app, 则是本文件名,如abc.py,就是abc
  app = Flask(__name__)

Program behavior when kill -HUP is recieved?

gunicorn启动flask项目的坑

Linux命令:

  • 查看那个pid占用了端口
    ss -lptn 'sport = :xxx'

  • 运行Gunicorn

#!/bin/bash
gunicorn --config run_gunicorn.py flaskFileName:app
  • kill Gunicorn的进程
# kill -9 的方式杀掉GUnicorn进程的话,端口不会立即释放
# 需要通过 ss -lptn 'sport = :xxx比如8080' 来发现那个pid 占用了端口,然后kill此process来解除端口占用
# 因此改成了kill
for id in `cat gunicorn.pid`;
    do 
      kill -9 $id;
    done
# 清空pid,防止重复kill导致kill掉了其他人的进程    
echo "" > gunicorn.pid  
#!/bin/bash

# 守护进程重新加载配置run_gunicorn.py,执行后,守护进程pid不变,子进程被重新创建,为新的pid
# https://unix.stackexchange.com/questions/15601/program-behavior-when-kill-hup-is-recieved

for id in `cat gunicorn.pid`;
    do 
      kill -HUP $id;
    done  
  • 查看Gunicorn的相关进程

Linux Pstree Command Tutorial

ps aux command and ps command explained

#!/bin/bash
# https://linuxhint.com/linux-pstree-command-tutorial/

echo "pstree:"  
pstree -apcnuh|grep gunicorn |grep $(whoami) # 运行中的当前用户的gunicorn进程。进程名也可能为为python等,这时候pstree需要有-a的参数,才能显示这个进程
echo "ps:" 
echo "UID        PID  PPID %CPU STIME TTY    CPU_TIME CMD"
# ps -aux|grep run_gunicorn.py 此命令不能显示ppid
# ps -ux|grep gunicorn 此命令不能显示ppid
ps -ef|grep gunicorn |grep $(whoami) # 显示当前用户的gunicorn相关的进程以及进程的详细信息 ppid为1则可能为守护进程或者孤儿进程
echo "port 8080:"
ss -lptn 'sport = :8080'

注意,用gunicorn --config run_gunicornConfig.py flaskFileName:app形式启动的gunicorn服务,可能进程名为python,这时候pstree需要有-a的参数,才能显示这个进程。-a含义:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示

  • 其他参考

Docker部署Gunicorn项目时的坑

supervisor + gunicorn + flask:日志服务管理(生产环境"level" 需要设置成 "INFO",以避免打日志拖累性能。此日志配置不支持热加载,即需要server_kill后server_run才生效,只是server_reload无效)

Python日志记录在多进程下的使用

相关文章

网友评论

      本文标题:Flask + Gunicorn + Gevent

      本文链接:https://www.haomeiwen.com/subject/hulnydtx.html