问题:
1.在linux下部署Flask性能比较低这个时候可以用一些热门的框架帮助Flask提高并发性能
2.经过调研和尝试使用
gunicorn可以结合gevent来进行部署,因此在高并发场景下也可适用,于是决定采用gunicorn进行部署。
环境安装
首先pip安装gunicorn。
pip install gunicorn --user
在运行的python脚本目录 创建加载并且配置文件
详情:
# config.py
import os
import gevent.monkey
gevent.monkey.patch_all()
import multiprocessing
# debug = True
loglevel = ‘debug‘
bind = "0.0.0.0:5000"
# 在当前目录下创建一个log文件夹用来存放日志和运行的pid
pidfile = "log/gunicorn.pid"
accesslog = "log/access.log"
errorlog = "log/debug.log"
# 进程守护True为开启后台模式,这里需要注意刚开始挂起最好使用False 看看脚本有没有反馈
daemon = True
# 启动的进程数
workers = 4
worker_class = ‘gevent‘
x_forwarded_for_header = ‘X-FORWARDED-FOR‘
调用命令:
[root@VM-0-15-centos ~]# gunicorn -c gunicorn.py main:app
# 这里需要注意第一次启动前先把配置文件中的
进程守护默认为False前台运行调试没问题 再挂载到后台
# 启动完成 进程是否启动成功可以用ps -aux看下
[root@VM-0-15-centos ~]# ps -aux|grep 要查询的脚本名
1.debug = True
生产环境不需要这个配置项,调试的时候可以使用。
开启debug项后,在启动gunicorn的时候可以看到所有可配置项的配置,如下所示。
config.py中只需要配置需要修改的项的,大部分采用默认配置即可。默认配置的具
体配置内容可以通过gunicorn -h来查询。
2.日志
- 需要log目录存在。如果不存在,启动会报错
- accesslog是访问日志,可以通过access_log_format设置访问日志格式
- loglevel用于控制errorlog的信息级别,可以设置为debug、info、warning、error、critical
3.workes
- worker_class是指开启的每个工作进程的模式类型,默认为sync模式,也可使用gevent模式。
- orkers是工作进程数量,在上述config.py中,取的是CPU的数量。需要注意部署机器的性能,不能无限制多开。多篇文章中推荐了multiprocessing.cpu_count() * 2 + 1这个数量
4.daemon
daemon = True意味着开启后台运行,默认为False
5.注意事项
需要注意的事项,在falsk代码里不能再加
# from gevent.pywsgi import WSGIServer
# monkey.patch_all()
都需要把的gevent,monkey模块并发注释掉,使用gunicorn里的monkey.patch_all()和gevent模块