gevent.pywsgi 与Werkzeug实现的wsgi 有区别么

阅读 9.3k
3 个回答

应该是为了配合gevent的异步io

人家用的是gevent的wsgi,而不是用werkzeug的WSGI server 主要是因为 gevent内部是单线程 协程调度的,所以为了支持协程的调度(异步IO等待时不阻塞,而当前线程可以去处理别的请求),所以需要gevent的调度器原生支持。可以看gevent的wsgi是pywsgi的源码实现,你如果用werkzeug的WSGI server就不能对同一线程的不同协程进行调度,而只能对线程级别调度,虽然flask本身是对greenlet的协程本身是支持的,但是请求调度器不换,支持了也没用

WSGI 是一个标准,两者实现应该没有区别。用 WSGIServer 包装应该主要是为了利用 gevent 的高性能,你确定用 Flask 的 server 不能实现功能吗?

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