利用 yield 关键字实现流式响应
@file_bp.route('/flow', methods=['GET'])
def flow_response():
def generate_file():
with open(f"{config.FILE_PATH}/{filename}", 'rb') as f:
while True:
fp = f.read(50 * 1024 * 1024) # 每次返回50M
if not fp:
os.remove("/".join([config.FILE_PATH, filename]))
break
yield fp
resp = Response(generate_file(), content_type="application/octet-tream")
resp.headers['Content-disposition'] = f"attachment;filename={filename}"
return resp