【问题标题】:Is gevent + gunicorn scalable and stable for production use?gevent + gunicorn 是否可扩展且稳定地用于生产用途?
【发布时间】:2012-11-30 22:10:43
【问题描述】:

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

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

我的要求:

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

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

请为我指明正确的方向。

【问题讨论】:

    标签: python webserver tornado gevent gunicorn


    【解决方案1】:

    在撰写本文时,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 请求的处理

    【讨论】:

    • 优秀的答案。对于那些今天可能会阅读它的人来说只是一个编辑:Gunicorn 现在带有 SSL 支持。
    猜你喜欢
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2017-08-07
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多