7

我一直在研究提供可扩展性的 Python Web 服务器,并决定使用 Tornado(由 Facebook FriendFeed 使用)或 Gevent。由于我对此很陌生,因此我依靠Python Web 服务器的基准测试来将 Tornado 和 Gevent 列入候选名单。此外,经过进一步研究,我发现:

  • Gevent 不是独立的 Web 服务器,我们需要使用 libevent 或 gunicorn 作为 Web 服务器。
  • libevent 有其缺陷,例如不支持 SSL、流、保持活动和 websockets。
  • 没有可用的基准测试结果,我可以找到哪些记录了 gevent 和 gunicorn 一起使用的性能。
  • gevent的作者本人已经推荐大家使用gevent + gunicorn进行实际部署。

我的要求:

  • 一个高度可扩展的异步 python web 服务器。
  • 包括 SSL 支持。

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

请指出我正确的方向。

4

1 回答 1

13

在撰写本文时,Gunicorn 处于测试阶段(0.16 版),而 Gevent 有一个1.0的候选发布版( Google Groups 上的公告),因此预期 API 的变化可能是合理的(对于 Gevent 而言则较少)也就是说,只要当您跟踪邮件列表(此处为:gunicorngevent)以查找可能破坏您的应用程序的更改时,您应该可以很好地进行生产部署

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

对于 SSL 支持,GunicornTornado都建议您在反向代理(如nginx )后面运行它们。在反向代理后面运行它们的其他优点包括改进对慢速客户端和错误 HTTP 请求的处理

于 2012-12-13T06:10:38.363 回答