python - gevent + gunicorn 是否可扩展且稳定用于生产?

标签 python webserver tornado gevent gunicorn

我一直在研究提供可扩展性的 python Web 服务器,并决定使用 Tornado(由 Facebook FriendFeed 使用)或 Gevent。因为我对此很陌生,所以我依赖 Benchmark of Python Web Servers入围 Tornado 和 Gevent。此外,经过进一步研究,我发现:

  • Gevent 不是独立的网络服务器,我们需要使用 libevent 或 gunicorn 作为网络服务器。
  • libevent 有它的 pitfalls ,例如不支持 SSL、streaming、keep alive 和 websockets。
  • 没有可用的基准测试结果,我可以找到哪些记录了一起使用 gevent 和 gunicorn 的性能。
  • gevent的作者本人已经推荐大家使用gevent + gunicorn用于实际部署。

我的要求:

  • 高度可扩展的异步 Python 网络服务器。
  • 包括 SSL 支持。

我特别倾向于gevent,因为它的greenlet基于方法。 我只是想要一些确凿的事实来证明 gunicorn + gevent 是一个不错的选择,并且具有很高的可扩展性,与 Tornado 相得益彰。或者有没有其他符合我要求的 python 网络服务器?

请给我指出正确的方向。

最佳答案

在撰写本文时,Gunicorn 处于测试(版本 0.16)并且 Gevent 有一个 候选发布 1.0 ( Announcement on Google Groups ),因此可能是合理的期望 API 发生变化(对于 Gevent 而言较少)也就是说,只要您跟踪邮件列表(此处:gunicorngevent)以了解可能会破坏您的应用程序的更改,您应该可以进行生产部署

Gunicorn+Gevent 是异步 python Web 服务器的不错选择。您应该执行自己的测试以将其与 Tornado 进行比较。公开可用的基准测试可能会产生误导,因为您的应用程序的行为可能与那些经过基准测试的应用程序不同。

对于 SSL 支持,GunicornTornado建议您在反向代理后面运行它们,例如 nginx .在反向代理后面运行它们的其他优势包括改进对 slow clients 的处理。和错误的 HTTP 请求

关于python - gevent + gunicorn 是否可扩展且稳定用于生产?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13852752/

相关文章:

mysql - 进入流程 20/20

python - 返回后请求处理程序中的 Tornado 处理数据

python - 使用 SQLAlchemy 和 Tornado 异步保存 API 输出

python - Q进程执行时间

python - 创建绘图的 Pytest 测试函数

java - Jetty VS Tomcat Maven 插件 - 我应该使用哪一个?

nginx - Nginx 背后的 Tornado ,我应该在 python 或 nginx.conf 中使用 TCP nodelay 配置?

python - 如何检查一个数字是否已经在二维 numpy 数组的第一列中

python - 计算椭圆内的点

javascript - 全屏打开谷歌浏览器