Flask开启多进程或多线程

2020年9月29日14:41:46 发表评论 10,912
摘要

Flask默认是单进程且单线程的,及时关闭debug也无法处理多并发的情况,新手党很容易在这里踩坑,如果想部署上线,还是要开启多进程或者多线程的,否则将无法处理并发请求,导致请求超时。

Flask开启多进程或多线程

0x01 前言

Flask默认是单进程且单线程的,及时关闭debug也无法处理多并发的情况,新手党很容易在这里踩坑,如果想部署上线,还是要开启多进程或者多线程的,否则将无法处理并发请求,导致请求超时。

下面看个例子,当flask app.run默认启动时,我用用浏览器快速访问一个延时两秒的接口(参数不同):

可见,第二个请求是等第一个请求结束后才处理的,所以可以确定是单进程、单线程的处理方式。

0x02 Flask开启自带的多线程或多进程

开启多线程:

开启多进程

需要注意的是,多进程和多线程不可以同时开启,且需要关闭debug。下面再来看下请求结果

可以看到,已经可以并发处理了。

关于多进程方式,processes参数是指定进程数量,当并发度大于请求数量的时候仍然会阻塞。

0x03 使用gunicorn多进程启动Flask

安装gunicorn

安装完成后可以使用下面的命令来启动

这里的app是Flask(__name__)返回值得接收变量

gunicorn支持配置文件启动,如下例子:

启动命令

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: