【发布时间】:2016-06-08 09:28:30
【问题描述】:
我有一个巨大的 csv 文件被另一个 asp 脚本调用,因为文件太大,asp 脚本在文件完成生成之前等待响应超时,因此 csv 没有下载。烧瓶中是否有一种方法可以在生成 csv 时返回空白响应或一次返回 csv 文件一行?
【问题讨论】:
我有一个巨大的 csv 文件被另一个 asp 脚本调用,因为文件太大,asp 脚本在文件完成生成之前等待响应超时,因此 csv 没有下载。烧瓶中是否有一种方法可以在生成 csv 时返回空白响应或一次返回 csv 文件一行?
【问题讨论】:
您可以像这样使用 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
【讨论】:
return Response((row for row in iter_all_rows()), mimetype='text/csv') 工作吗?
(i for i in x) 是一个生成器。