fromfastapiimportFastAPIfromfastapi.responsesimportStreamingResponsefromioimportBytesIO app=FastAPI()deffake_video_stream():foriinrange(10):yieldf"Streamed line {i}\n"@app.get("/stream")defstream_video():returnStreamingResponse(fake_video_stream(), media_type="text/plain") 9.重定向 (Redirect ...
app=FastAPI()@app.get("/typer")asyncdefread_typer():returnRedirectResponse("http://localhost:8000/users/legacy/") 6.StreamingResponse 接收一个异步的发生器或者普通的发生器/枚举器,对返回结果流式输出 fromfastapiimportFastAPIfromfastapi.responsesimportStreamingResponse some_file_path="large-video-file....
StreamingResponse¶ 采用异步生成器或普通生成器/迭代器,然后流式传输响应主体。 Python 3.8+ fromfastapiimportFastAPIfromfastapi.responsesimportStreamingResponseapp=FastAPI()asyncdeffake_video_streamer():foriinrange(10):yieldb"some fake video bytes"@app.get("/")asyncdefmain():returnStreamingResponse(fak...
return FileResponse(file_path, media_type='application/octet-stream', filename="file.zip") 8.流式响应(Streaming Response) 使用StreamingResponse返回流式数据,如大文件或音频、视频等。 from fastapi import FastAPI from fastapi.responses import StreamingResponse from io import BytesIO app = FastAPI() d...
通过返回StreamingResponse(stream, media_type="text/plain"),FastAPI 将会逐个读取字节流中的数据块并将其返回给客户端。 这里的关键是将字节流对象作为数据源传递给StreamingResponse。FastAPI 会从字节流中逐个读取数据块,并将每个数据块作为响应的一部分返回给客户端。客户端在接收到一个数据块后可以开始处理数据,...
PlainTextResponse:用于返回纯文本; JSONResponse:用于返回 JSON; RedirectResponse:用于重定向; StreamingResponse:用于返回二进制流; 它们都继承了 Response,只不过会自动帮你设置响应类型,举个例子: from fastapi import FastAPI from fastapi.responses import Response, HTMLResponse ...
StreamingResponse 是FastAPI 中用于处理流式响应的一个类。它允许你以流的方式逐步发送响应数据,而不是一次性发送整个响应体。这对于需要发送大量数据或长时间生成数据的场景特别有用,因为它可以减少内存使用并提高响应速度。 3. 示例:在 FastAPI 中使用 StreamingResponse 下面是一个简单的示例,展示了如何在 FastAPI ...
如果直接返回一个 Response,数据不会自动转换,也不会显示在文档中 这一节开始讲自定义响应 会讲解多个响应类型 JSONResponse HTMLResponse、PlainTextResponse ORJSONResponse、UJSONResponse RedirectResponse StreamingResponse、FileResponse 所有响应类都是继承于 Response ...
app=FastAPI()defgenerate_numbers():foriinrange(1,11):yieldf"{i}\n"time.sleep(1)# 为了模拟长时间的处理@app.get("/stream")asyncdefstream_numbers():returnStreamingResponse(generate_numbers(),media_type="text/plain") 1. 2. 3. 4. ...
app=FastAPI()defgenerate_data():# 模拟生成大量数据foriinrange(100000):yieldf"Data{i}\n"@app.get("/data")defget_data():data=generate_data()returnStreamingResponse(data,media_type="text/plain") 1. 2. 3. 4. 5. 6. 7. 8.