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

发布于 2022-08-29 18:02:36 字数 211 浏览 16 评论 0

看到一个flask+gevent 实现的简单聊天室,https://github.com/sdiehl/minichat/blob/master/app.py
为什么最后要用WSGIServer包装app, 否则就实现不了功能呢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

如梦 2022-09-05 18:02:37

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

素年丶 2022-09-05 18:02:37

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

濫情▎り 2022-09-05 18:02:36

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文