StreamingResponse
是 FastAPI 中提供的一种特殊响应类型,用于流式发送数据到客户端,而不是一次性返回全部内容。
它非常适合用于:
-
实时聊天输出
-
视频/音频流
-
文件下载(大文件)
-
生成大型响应内容的过程
基本用法
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import asyncio
app = FastAPI()
async def generate_stream():
yield “Hello”
await asyncio.sleep(1)
yield ” world”
await asyncio.sleep(1)
yield “!”
@app.get(“/stream”)
async def stream():
return StreamingResponse(generate_stream(), media_type=”text/plain”)
访问 /stream
:
客户端会:
-
第 0 秒收到
"Hello"
-
第 1 秒收到
" world"
-
第 2 秒收到
"!"
这就是流式返回的效果。