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

  • Gevent 不是独立的 web 服务器,我们需要使用 libevent 或 gunicorn 作为 web 服务器。
  • libevent 有它的 pitfalls ,比如不支持 SSL、流媒体、keep alive 和 websockets。
  • 没有可用的基准测试结果,我可以找到哪些文档记录了 gevent 和 gunicorn 一起使用的性能。
  • gevent的作者本人建议每个人都使用gevent + gunicorn进行实际部署。

  • 我的要求:
  • 高度可扩展的异步 Python Web 服务器。
  • 包括 SSL 支持。

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

    请指出我正确的方向。

    最佳答案

    在撰写本文时,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/

    10-13 07:14