升级Flask 到Quart 获得3 倍性能提升 | quart python
简评:将你的Flask应用程序升级到Quart应用程序,轻松获得3倍的性能提升,本文将用一个简单的demo来告诉大家如何去做。自从Flask[1]在8年前发布以来,Python发生了很大变化,特别是引入了asyncio。asyncio允许开发像uvloop[2]和asyncpg[3]这样的库来提高性能,可惜要Flask集成asyncio或这些库不是一件简单的事情。然而,Flask-API可以通过Quart框架与asyncio一起使用。Quart提供了一个简单的过渡机制使得Flask应用程序可以使用asyncio,因为它们共享Flask-API,这意味着现有的Flask应用程序可以在Quart应用程序中进行很少的改进,然后...
简评:将你的 Flask 应用程序升级到 Quart 应用程序,轻松获得 3 倍的性能提升,本文将用一个简单的 demo 来告诉大家如何去做。自从 Flask[1] 在 8 年前发布以来,Python 发生了很大变化,特别是引入了 asyncio。asyncio 允许开发像 uvloop[2] 和 asyncpg[3] 这样的库来提高性能,可惜要 Flask 集成 asyncio 或这些库不是一件简单的事情。 然而,Flask-API 可以通过 Quart 框架与 asyncio 一起使用。
Quart 提供了一个简单的过渡机制使得 Flask 应用程序可以使用 asyncio,因为它们共享 Flask-API,这意味着现有的 Flask 应用程序可以在 Quart 应用程序中进行很少的改进,然后就可以使用这些新的库来产生使用 Flask 无法实现的性能改进。
本文详细介绍了典型的生产环境的 CRUD 应用程序从 Flask 到 Quart 的转换,并展示了典型生产部署的性能改进。
tl;dr
将这个 Flask-pyscopg2 应用程序升级到 Quart-asyncpg 应用程序可以提高 3 倍的性能,而不需要对代码进行重大的重写或调整。
应用程序
对于这个比较,我将使用一个简单的只提供一个 RESTful 接口的应用程序,这是微服务架构中的常见用例,并提供了一个非常简单的代码库进行比较。
该应用程序有由三个路由组成的两个蓝图。这些路由有
单个资源: GET /films/<int:id>/ 所有资源: GET /films/新资源: POST /reviews/源代码可以在 https://github.com/pgjones/faster_than_flask_article[4] 找到,有...