gunicorn+gevent 怎么觉得未实现 flask 的真正并行。

用 gunicorn 启动 flask 应用,worker_class 选择 gevent, worker 选择3.我构造了一种场景。3个url对应的3个应用中,都添加while 循环,一直不返回。curl 访问这3个url。命令卡住。curl 访问另外一个正常的 url, 发现这个也卡住了。看到网上说 gevent 可以实现并行,提高 flask的性能,但感觉并未真正实现并行。只是 gunicorn 多起了几个进程,但如果这几个进程都被占用,服务还是无法访问。有同学知道 gevent 怎么实现真正的 flask 应用的并行访问嘛?、

阅读 5.4k
2 个回答

gevent没用过。但是看介绍(以及名字)是async io的东东。这世界上有两种程序,一个是叫作CPU bound的。一个是叫作IO bound的。Async IO只对后者有效。而你的试验用了while loop。恰恰是CPU bound的。因此可以预见gevent没有起作用。需要另外设计实验。

你在flask源码里打上monkey patch就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏