在 flask 中实现类似于 chatgpt 的边生成边传输数据流,需要使用 stream_with_context()。
代码示例:
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()))
说明:
- stream_with_context() 返回一个生成器函数,用于生成数据流。
- 生成器函数分步生成数据项,并在每个项之间使用 yield。
- app.response_class 用于创建一个响应对象,其中包含生成的数据流。
- 在此示例中,生成器函数将生成 “hello “、请求查询参数中的 name 和 “!”。