Python Flask:如何一次返回一行csv

时间:2016-06-08 09:28:31

标签: python csv flask

我有一个巨大的csv文件被另一个asp脚本调用,因为文件太大,asp脚本在文件生成完成之前等待响应超时,因此csv不下载。烧瓶中有没有办法在生成csv时返回空白响应或者一次返回一行csv文件?

1 个答案:

答案 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