网站建设普及型,手机网站怎么解析,免费p2p网站建设,宝安区简介多线程
flask默认使用多进程处理请求#xff0c;因此#xff0c;是支持并发的。比如两个调用a.html和b.html#xff0c;
请求a.html未运行完成#xff0c;在浏览访问b.html不会阻塞。开两个不同浏览器#xff0c;分别请求请求运行时间较长的a.html也不阻塞。只要不用一个…多线程
flask默认使用多进程处理请求因此是支持并发的。比如两个调用a.html和b.html
请求a.html未运行完成在浏览访问b.html不会阻塞。开两个不同浏览器分别请求请求运行时间较长的a.html也不阻塞。只要不用一个浏览去调它都是不阻塞的如果开一个浏览器在不同tab页请求同一阻塞页面则会阻塞这是浏览器引起的。
WSGI协议
WSGI是Web Server Gateway Interface的缩写它是Python应用程序或者框架如Flask和web服务器之间的一种接口。flask默认使用werkzeug库实现WSGI协议。 只要实现了WSGI协议的任何web server都可以作为flask app的服务器比如uWSGI Gunicornmod_wsgi都可以替换Werkzeug作为 web server。
flask自带的多进程
在app.run()时加入参数threadedFalse, processes5, debugFalse时可使用5个进程。进入flash的app.run()函数内部可以看到真正使用werkzeug库来实现后台服务。flask自带的多进程有一个问题每次请求时进程开启该请求运行结束进程关闭因此无法在每个进程中保留现场每次都做初始化也会浪费很多时间。
gunicorn
如果想在flash一开始就启多个进程可使用gunicorn做如下的test.py
from flask import Flask
app Flask(__name__)app.route(/)
def hello():return Hello World!注意使用gunicorn后无需在程序中运行app.run()。
运行命令
gunicorn -w 3 -b 0.0.0.0:8080 test:app这里设成开启3个进程0.0.0.0使得在docker内部启动的服务可在宿主机上被访问test是py文件名app是其中的flask服务名。此时使用ps命令即可看到一开始就启动了多个进程。
参考
Flask: flask框架是如何实现非阻塞并发的