FastAPI 提供 StreamingResponse 類,用於在 API 呼叫期間將資料串流傳輸到客戶端。雖然此功能旨在以非阻塞方式串流傳輸數據,但在使用具有阻塞操作或不當使用的生成器函數時,可能會出現問題。
確保成功串流傳輸,請考慮以下事項:
考慮以下Python 程式碼:
# app.py from fastapi import FastAPI, StreamingResponse from fastapi.responses import StreamingResponse import asyncio app = FastAPI() async def fake_data_streamer(): for i in range(10): yield b'some fake data\n\n' await asyncio.sleep(0.5) @app.get('/') async def main(): return StreamingResponse(fake_data_streamer(), media_type='text/event-stream') # or, use: ''' headers = {'X-Content-Type-Options': 'nosniff'} return StreamingResponse(fake_data_streamer(), headers=headers, media_type='text/plain') ''' # test.py (using httpx) import httpx url = 'http://127.0.0.1:8000/' with httpx.stream('GET', url) as r: for chunk in r.iter_raw(): # or, for line in r.iter_lines(): print(chunk)
此程式碼示範如何從FastAPI 應用程式中的產生器函數串流傳輸資料並並使用httpx 庫使用它。
以上是如何在 FastAPI 中有效處理串流響應?的詳細內容。更多資訊請關注PHP中文網其他相關文章!