python flask 如何实现stream传输,类似chatgpt那样的?
请问如何实现边生成边传输?网上查到的代码如下:
from time import sleep
from flask import Flask, Response, stream_with_context
app = Flask(__name__)
@app.route('/stream', methods=['GET'])
def stream():
def generate():
for i in range(1, 21):
print(i)
yield f'This is item {i}\n' # 生成流数据
# 在生成每个数据项后可以添加一些适当的延时或其他逻辑
sleep(0.5)
return Response(generate(),
mimetype='text/plain')
if __name__ == '__main__':
app.run(debug=True)
这个效果不对, 上面的代码会等待generate()结束才开始浏览器才显示文本.我希望是能一边执行一边返回
回复
1个回答

test
2024-07-02
好好看文档哦 https://flask.palletsprojects.com/en/2.1.x/patterns/streaming/
from flask import stream_with_context, request
@app.route('/stream')
def streamed_response():
def generate():
yield 'Hello '
yield request.args['name']
yield '!'
return app.response_class(stream_with_context(generate()))
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容