flask 流内容

来源:互联网 发布:网络诈骗青少年案例 编辑:程序博客网 时间:2024/06/06 03:01
@main.route('/csv', methods=['GET'])def csv():    users = User.query.all()    def generate():        head_str = ['email', 'username', 'name', 'location', 'confirmed', 'member_since', 'last_seen']        head = list()        head.extend(head_str)        yield ','.join(head).encode('GB18030') + '\n'        for user in users:            row = [user.email, user.username, user.name,                   user.location, turnBool(user.confirmed), strftime(user.member_since), strftime(user.last_seen)]            vl = list()            vl.extend(row)            yield ','.join(vl).encode('GB18030') + '\n'    rsp = Response(stream_with_context(generate()), mimetype='text/csv')    rsp.headers['Content-Disposition'] = 'attachment; filename="csv.csv"'    return rsp    # return Response(stream_with_context(generate()), mimetype='text/csv')def turnBool(b):    if b:        return '1'    else:        return '0'def strftime(time):    if time is not None:        return time.strftime('%Y-%m-%d %H:%M:%S')    else:        return 'Null'


New in version 0.9.
注意,当你生成流内容时,请求环境已经在函数执行时消失了。 Flask 0.9 为你提供了 一点帮助,让你可以在生
成器运行期间保持请求环境:
如果没有使用 stream_with_context() 函数,那么就会引发 RuntimeError 错误。

from flask import stream_with_context, request, Response@app.route('/stream')def streamed_response():    def generate():        yield 'Hello '        yield request.args['name']        yield '!'    return Response(stream_with_context(generate()))




0 0
原创粉丝点击