到 2026-03-28,Flask 官方仍明确支持 async / await,前提是安装 async extra:
pip install "flask[async]"然后你可以写:
from flask import Flask
app = Flask(__name__)
@app.get("/remote-summary")
async def remote_summary():
data = await fetch_remote_data()
return {"summary": data}但这里最重要的不是“能写”,而是“怎么理解”。
官方文档强调的关键事实是:
Flask 作为 WSGI 应用,每个请求仍然会占住一个 worker。 异步视图的价值主要是:
- 在单个请求内部并发等待多个 IO
- 能更自然接 async 风格库
- 不是自动把整站并发模型升级成 ASGI
所以一定别误会成:
- “用了
async def就能无限并发” - “Flask 现在就等于 Quart/FastAPI 的并发模型”
- “我可以在视图里
asyncio.create_task()当后台任务队列用”
官方也明确提醒:
后台任务更适合交给真正任务队列。
如果你的系统主要是 async codebase、长连接、WebSocket、大量并发 IO,应该认真评估 Quart 这类 ASGI-first 方案。
一句话记忆:
Flask async = 轻骑兵开始会骑摩托
Quart / ASGI = 整个街区道路系统都为高速异步修的别把“能用异步语法”误判成“框架本体已经 async-first”。