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

时间:2012-12-13 04:04:27

标签: python webserver tornado gevent gunicorn

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

  • Gevent不是一个独立的Web服务器,我们需要使用libevent或gunicorn作为Web服务器。
  • libevent有pitfalls,例如不支持SSL,流媒体,保持活动和websockets。
  • 没有可用的基准测试结果,我可以找到gevent和gunicorn的性能一起使用的文件。
  • gevent的作者本人建议大家使用gevent + gunicorn进行实际部署。

我的要求:

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

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

请指出我正确的方向。

1 个答案:

答案 0 :(得分:12)

在撰写本文时,Gunicorn处于 beta (版本0.16),而Gevent有一个发布候选版本为1.0(Announcement on Google Groups),所以它可能是合理预期API会发生变化(对Gevent来说更少)也就是说,只要您跟踪邮件列表(此处:gunicorngevent)以查找可能会破坏您的应用程序的更改,您应该是生产部署很好

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

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