Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
350 views
in Technique[技术] by (71.8m points)

python - How do I stream a file using werkzeug?

I want to stream a big file via werkzeug.
Currently my wsgi application looks like this:

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))

I'm not sure what I should do with the object returned by the wrap_file function.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Haven't tried myself but I think following will work.

g = file(path_to_bigfile) # or any generator
return Response(g, direct_passthrough=True)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...