Flask被阻塞了,请问该如何解决呢,flask阻塞解决,gunicorn(wit
Flask被阻塞了,请问该如何解决呢,flask阻塞解决,gunicorn(wit
gunicorn(with gevent)并未解决Flask阻塞问题
Flask#server.py:
from flask import Flaskimport timeapp = Flask(__name__)@app.route("/")def index(): time.sleep(10) return "Hello World"if __name__=='__main__': app.run()
gunicorn配置#gun.py:
import osbind='127.0.0.1:5000'workers=4backlog=2048worker_class="gevent" #sync, gevent,meinhelddebug=Trueproc_name='/tmp/gunicorn.pid'pidfile='/tmp/gunicorndebug.log'loglevel='debug'
测试脚本#test.py:
import timeimport requestss=time.time()print requests.get("http://127.0.0.1:5000").textprint time.time()-s
然后启动服务:
gunicorn -c gun.py server:app
同时我开启新的两个shell进行测试,几乎同时执行python test.py
测试结果为:
一个为:Hello World19.0649909973另一个为:Hello World19.0649909973
本来Flask就是阻塞的,以为加上gunicorn就ok了,但是显然Flask被阻塞了,请问该如何解决呢?之前用tornado加上@asynchronous就可以解决阻塞问题...
不要用time.sleep要用gevent.sleep,两者的机制不一样的,Tornado使用的是自己的IOLoop,gevent则使用libev(老版本使用libevent)。因此,只有gevent自己的sleep才能通知libev当前协程已被阻塞。gevent的monkey patch也是把各个库里面相关的部分全部改成用libev的才能让gevent起作用。
编橙之家文章,
相关内容
- Django1.7报错问题求助,django1.7问题求助,Django1.7.5
- 关于Jinjia2中wtforms生成html标签时含有'-'属性问题,jin
- python不打开文件情况下如何获得大文件md5值的方法,
- Python mysqldb执行execute报InterfaceError: (0, '')求帮忙解答,
- python中子类父类继承具体指什么?,python中子类继承
- Python什么方法适合处理数据入库乱码问题,python乱码
- Python最适合在Mac使用的图形库是哪个,pythonmac图形库
- Python多线程获取网页数据速度过慢如何调整,python多线
- web.py增加、删除、修改、查询怎么做,web.py查询,其实我
- Python import相互导入有顺序会影响执行吗?,pythonimport,
评论关闭