gevent.pywsgi 与Werkzeug实现的wsgi 有区别么
看到一个flask+gevent 实现的简单聊天室,https://github.com/sdiehl/minichat/blob/master/app.py
为什么最后要用WSGIServer包装app, 否则就实现不了功能呢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
人家用的是gevent的wsgi,而不是用werkzeug的WSGI server 主要是因为 gevent内部是单线程 协程调度的,所以为了支持协程的调度(异步IO等待时不阻塞,而当前线程可以去处理别的请求),所以需要gevent的调度器原生支持。可以看gevent的wsgi是pywsgi的源码实现,你如果用werkzeug的WSGI server就不能对同一线程的不同协程进行调度,而只能对线程级别调度,虽然flask本身是对greenlet的协程本身是支持的,但是请求调度器不换,支持了也没用
WSGI 是一个标准,两者实现应该没有区别。用
WSGIServer
包装应该主要是为了利用 gevent 的高性能,你确定用 Flask 的 server 不能实现功能吗?应该是为了配合gevent的异步io