【问题标题】:Which setup is more efficient? Flask with pypy, or Flask with gevent?哪种设置更有效?用 pypy 烧瓶,还是用 gevent 烧瓶?
【发布时间】:2012-12-27 00:11:27
【问题描述】:

“pypy”和“gevent”都应该提供高性能。 Pypy 据说比 CPython 快,而 gevent 基于 co-routines 和 greenlets,据说这可以使 Web 服务器更快。

但是,它们彼此不兼容。

我想知道哪种设置更有效(在速度/性能方面):

  • 在 pypy 上运行的内置 Flask 服务器

或:

  • gevent 服务器,在 CPython 上运行

【问题讨论】:

  • 如何针对与您相关的任务对其进行基准测试?我认为这不可能是建设性的。
  • 这是一个特定的问题,有 3 个可能的答案:1. flask-pypy 明显更快 2. flask-gevent 明显更快 3. 它们很接近和/或很难分辨基准。

标签: python performance gevent pypy


【解决方案1】:

简短的回答是:使用 PyPy更快,使用 gevent更高并发

可以同时使用 gevent 和 PyPy(我们在 PubNub 为多个项目执行此操作),尽管这可能很棘手。从 PyPy 2.2 开始,需要一些补丁来实现其套接字实现。我们在 github 上有一个实验分支:https://github.com/pubnub/gevent/tree/pypy-hacks - 与pypycore 结合使用。

我们的建议?将 Flask 与 PyPy gevent 一起使用。两全其美!

【讨论】:

  • 看看here。 Gevent 现在支持 pypy。
  • @kawing-chiu 是的。当前的 gevent 1.1 beta 版本中提供了 PyPy 支持。仍建议谨慎行事。测试版仍在接收错误修复。只需关注提交日​​志,看看自上一个 beta 版本以来是否有任何可能影响您的应用程序的更改。
【解决方案2】:

Pypy 与 Gevent +1.1 (http://www.gevent.org/changelog.html) 兼容。它也与 Python 3 兼容。那么,为什么不同时使用两者呢? Pypy 将提高处理性能,而 Gevent 将通过使用地下异步连接来帮助执行 IO 绑定任务(例如数据库查询、Web 请求)。

【讨论】:

    【解决方案3】:

    内置flask server是BaseHTTPServer左右,千万不要用。最好的情况很可能是 tornado + pypy 或类似的东西。使用前进行基准测试。这也很大程度上取决于你在做什么。 Web 服务器 + Web 框架基准测试通常是 hello world 类型的基准测试。你的应用真的是这样吗?

    干杯,菲哈尔

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-07
      • 2020-11-23
      • 1970-01-01
      • 2019-07-29
      相关资源
      最近更新 更多