如何使用werkzeug流式传输文件?

Fra*_*ery 8 python werkzeug

我想通过werkzeug流式传输一个大文件.
目前我的wsgi应用程序看起来像这样:

from werkzeug.wrappers import Request, Response
from werkzeug.wsgi import ClosingIterator, wrap_file
import os

class Streamer(object):

    def __init__(self):
        pass

    def __call__(self, environ, start_response):
        request = Request(environ)
        filename = os.getcwd() + "/bigfile.xml"
        try:
            response = wrap_file(environ, open(filename) )
            return response
        except HTTPException, e:
            response = e
            return ClosingIterator(response(environ, start_response))
Run Code Online (Sandbox Code Playgroud)

我不确定我应该如何处理wrap_file函数返回的对象.

She*_*har 19

没试过自己,但我认为以下工作会有效.

g = file(path_to_bigfile) # or any generator
return Response(g, direct_passthrough=True)
Run Code Online (Sandbox Code Playgroud)