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')
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"}