Flask возвращает асинхронный генератор в конечной точке асинхронностиPython

Программы на Python
Ответить
Anonymous
 Flask возвращает асинхронный генератор в конечной точке асинхронности

Сообщение Anonymous »

Flask позволяет осуществлять потоковую передачу контента с помощью генераторов.
Но я не могу осуществлять потоковую передачу контента с помощью асинхронного генератора в асинхронной конечной точке. Вот пример:
from flask import Flask, Response
import asyncio

app = Flask(__name__)

async def generate_data():
for i in range(5):
yield f"Data: {i}\n"
await asyncio.sleep(1)

@app.route('/stream')
async def stream():
return Response(generate_data(), mimetype='text/plain')

if __name__ == '__main__':
app.run(debug=True, port=3030)

что выдает эту ошибку:
╰─$ python test.py
* Serving Flask app 'test'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:3030
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 899-865-629
Debugging middleware caught exception in streamed response at a point where response headers were already sent.
Traceback (most recent call last):
File "/home/ashkan/Downloads/flask-async-test/venv/lib/python3.12/site-packages/werkzeug/wsgi.py", line 256, in __next__
return self._next()
^^^^^^^^^^^^
File "/home/ashkan/Downloads/flask-async-test/venv/lib/python3.12/site-packages/werkzeug/wrappers/response.py", line 32, in _iter_encoded
for item in iterable:
^^^^^^^^^
TypeError: 'async_generator' object is not iterable
127.0.0.1 - - [29/Oct/2024 23:30:58] "GET /stream HTTP/1.1" 200 -


Подробнее здесь: https://stackoverflow.com/questions/791 ... c-endpoint
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»