当前位置:   article > 正文

关于Python-flask的启动方式总结【如何更好的优化运行性能,生产环境和调试环境未必选择可能不一样】_flask unicorn高性能启动方式

flask unicorn高性能启动方式

第一种启动方式:使用supervisor控制的原生flask启动【适合调试环境,一旦高度并发可能会崩溃!】

  1. [program:flask_main]
  2. directory=/root/youproject ; 非常重要,选择在那个目录下执行命令
  3. command=/usr/local/Anaconda3/envs/youproject/bin/python -u flask_main.py ; command这里的gunicorn一定是你程序运行的python环境【如果虚拟环境就必须选择虚拟环境下面的路径】
  4. autostart = true ; 在 supervisord 启动的时候也自动启动
  5. autorestart = true ; 程序异常退出后自动重启
  6. startsecs = 3 ; 启动 3 秒后没有异常退出,就当作已经正常启动了
  7. startretries = 3 ; 启动失败自动重试次数,默认是 3
  8. redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
  9. user=root                
  10. loglevel=info
  11. ; 这一配置项的作用是:如果supervisord管理的进程px又产生了若干子进程,使用supervisorctl停止px进程,停止信号会传播给px产生的所有子进程,确保子进程也一起停止。这一配置项对希望停止所有进> 程的需求是非常有用的。
  12. stopasgroup=true
  13. [supervisord] ; 必须配置
  14. [supervisorctl] ; 必须配置

 

第二种启动方式,使用supervisor控制的gunicorn+gevent启动Flask项目【适合生产环境推荐使用】

  1. [program:flask_main]
  2. directory=/root/youproject; 非常重要,选择在那个目录下执行命令
  3. command=/usr/local/Anaconda3/envs/youproject/bin/gunicorn -c other_config/gunicorn.py flask_main:app ; command这里的gunicorn一定是你程序运行的python环境【如果虚拟环境就必须选择虚拟环境下面的路径】
  4. autostart = true ; 在 supervisord 启动的时候也自动启动
  5. autorestart = true ; 程序异常退出后自动重启
  6. startsecs = 3 ; 启动 3 秒后没有异常退出,就当作已经正常启动了
  7. startretries = 3 ; 启动失败自动重试次数,默认是 3
  8. redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
  9. user=root                
  10. loglevel=info
  11. stopasgroup=true
  12. [supervisord] ; 必须配置
  13. [supervisorctl] ; 必须配置

gunicorn.py配置文件 

  1. # gunicorn+gevent启动Flask服务器的配置文件【gevent兼容配置websocket】
  2. import multiprocessing
  3. import gevent.monkey
  4. # 【使用gevent启动默认都会执行此方法】运行启动添加猴子补丁
  5. gevent.monkey.patch_all()
  6. debug = True
  7. loglevel = "debug"
  8. bind = "0.0.0.0:8099"
  9. workers = multiprocessing.cpu_count() * 2 + 1
  10. chdir = "/root/flaskBlockChainGamble"
  11. backlog = 2048
  12. worker_class = "geventwebsocket.gunicorn.workers.GeventWebSocketWorker"
  13. worker_connections = 1000
  14. # 是否开启后台启动【True开启】----如果使用supervisor监控不能开启【只能前端运行】
  15. daemon = False
  16. # gunicorn -c other_config/gunicorn.py flask_main:app

flask_main.py文件 

  1. """
  2. 功能:基于【gunicorn+gevent的linux运行服务器】gevent兼容websocket,且性能最佳!
  3. 特殊说明:
  4. 1、gevent默认是单线程运行【可使用Python运行,相互请求之间是同步阻塞】
  5. 2、gevent必须结合gunicorn运行,开启并发模式【不同请求之间相互独立】,且性能非常给力!
  6. 3、gevent是否开启debug模式,请在gunicorn的配置文件下配置debug属性!
  7. """
  8. from gevent import pywsgi
  9. from geventwebsocket.handler import WebSocketHandler
  10. server = pywsgi.WSGIServer(
  11. ('0.0.0.0', 8099), app, handler_class=WebSocketHandler)
  12. server.serve_forever()

参考配置文档:https://www.cnblogs.com/fengff/p/9225859.html

参考配置文档:https://www.jianshu.com/p/192e62a5cdd2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/521970
推荐阅读
相关标签
  

闽ICP备14008679号