我有一个巨大的csv文件被另一个asp脚本调用,因为文件太大,asp脚本在文件生成完成之前等待响应超时,因此csv不下载。烧瓶中有没有办法在生成csv时返回空白响应或者一次返回一行csv文件?
答案 0 :(得分:6)
您可以使用Flask流式传输数据,如下所示:
这是一个基本的视图功能,可以动态生成大量CSV数据。诀窍是有一个内部函数,它使用生成器生成数据,然后调用该函数并将其传递给响应对象:
from flask import Response
@app.route('/large.csv')
def generate_large_csv():
def generate():
for row in iter_all_rows():
yield ','.join(row) + '\n'
return Response(generate(), mimetype='text/csv')
每个yield表达式都直接发送到浏览器。请注意,虽然某些WSGI中间件可能会破坏流式传输,但在配置分析器和其他可能已启用的内容的调试环境中要小心。
有关详情,请点击here