Quart:给 Flask 加上异步能力的 Python Web 框架

如果你在找一款既能用 Flask 的熟悉语法,又能原生支持异步的 Python Web 框架,Quart 是个值得了解的选项。它在 GitHub 上收获了 3,639 颗 Star,由 Flask 背后的 Pallets 团队维护。

Quart 的定位很明确:基于 asyncio 重新实现 Flask。这意味着你熟悉的蓝图、路由装饰器、模板渲染等概念,在 Quart 里都能找到对应。不同之处在于,Quart 的视图函数可以直接写 async def,内部用 await 处理 IO 操作。

正文顶部截图

核心能力覆盖常见的 Web 开发需求。你可以用它渲染 HTML 模板,构建 JSON API,处理 WebSocket 长连接,还能流式传输请求和响应数据。这些功能都建立在异步 IO 之上,适合高并发的网络场景。

和 Flask 的兼容性是 Quart 的卖点。官方文档说,从 Flask 迁移到 Quart,通常只需要全局替换 flask 为 quart,再给视图函数加上 async 和 await 关键字。很多 Flask 扩展也能直接在 Quart 里使用,已有的生态可以复用。

安装方式是通过 pip:

pip install quart

下面这段代码展示了基本用法:渲染模板、返回 JSON、建立 WebSocket 连接,三个常见场景写在一个文件里。

from quart import Quart, render_template, websocket

app = Quart(__name__)

@app.route("/")
async def hello():
    return await render_template("index.html")

@app.route("/api")
async def json():
    return {"hello": "world"}

@app.websocket("/ws")
async def ws():
    while True:
        await websocket.send("hello")
        await websocket.send_json({"hello": "world"})

启动命令和 Flask 类似:

quart run

服务会默认跑在 http://127.0.0.1:5000。生产环境需要配合 ASGI 服务器部署,Hypercorn 是官方推荐的选择,同样由 Pallets 生态维护。

README区域截图

Quart 的适用人群很清晰:已经在用 Flask,但项目里出现了异步需求,比如需要并发处理大量连接,或者要接入 WebSocket。这种情况下,不用换框架,也不用学习新的路由和配置方式,迁移成本很低。

FastAPI、Sanic 也是 Python 异步框架里知名度较高的项目。Quart 的优势在于和 Flask 的语法一致,学习曲线平缓。如果你团队里已经有一套 Flask 的代码规范和经验,Quart 能让你们在不推翻现有架构的前提下,引入异步能力。

Quart 没有试图做全栈,也没有堆砌功能,而是在 Flask 的基础上补上异步这一环。对于需要 async/await 的 Python Web 项目,Quart 提供了一条平滑的升级路径。遇到问题时,项目文档和 cheatsheet 是首要参考,也可以在 Discussions 页面或 Discord 社区提问。

文档和 cheatsheet 是首要参考,也可以在 Discussions 页面或 Discord 社区提问。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐