FastAPI fournit la classe StreamingResponse pour diffuser des données aux clients pendant les appels d'API. Bien que cette fonctionnalité soit destinée au streaming de données de manière non bloquante, des problèmes peuvent survenir lors de l'utilisation d'une fonction de générateur avec des opérations de blocage ou une utilisation inappropriée.
Pour garantir le succès streaming, considérez ce qui suit :
Considérez le code Python suivant :
# 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)
Ce code montre comment diffuser des données à partir d'une fonction génératrice dans une application FastAPI et les consommer à l'aide de la bibliothèque httpx.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!