Page 1 of 1

Python Fastapi: Inhalt der Streaming-Antwort liefern

Posted: 27 Jan 2025, 10:58
by Anonymous
Ich habe einen Endpunkt, der Fastapi StreamingResponse zurückgibt:

Code: Select all

async def stream_results():
...
async for _output in result_generator:
...
yield (json.dumps({'Field': value}, ensure_ascii=False)) + '\n'

return StreamingResponse(stream_results(), media_type='application/x-ndjson')
Wert – Zeichenfolge, die inkrementell ansteigt
Jetzt möchte ich eine Antwort von diesem Dienst erhalten und sie „restreamen“:

Code: Select all

@app.post('/test')
async def test_api(request: Request):

async def stream_results():
with requests.post("http://127.0.0.1:8000/test_api", json={}, stream=True) as r:
for chunk in r.iter_content(1000):
print(chunk)
yield chunk

return StreamingResponse(stream_results(), media_type='application/x-ndjson')
< /code>
ISSUS ist: Druck funktioniert wie erwartet und gibt das Ergebnis aus, wie es generiert wird. Aber Rendite nicht. Es wartet, bis Stream_Results beendet werden kann, und gibt dann eine solche Reaktion zurück, anstatt ein allmähliches Streaming -Ergebnis zu erzielen: < /p>
{'Field': "a"}
{'Field': "ab"}
{'Field': "abc"}
Was mache ich falsch?