2011-03-02 11 views
6

Quiero transmitir un archivo grande a través de werkzeug.
Actualmente mi solicitud wsgi se parece a esto:¿Cómo puedo transmitir un archivo usando werkzeug?

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

No estoy seguro de lo que debía hacer con el objeto devuelto por la función wrap_file.

Respuesta

15

No lo he probado pero creo que seguirlo funcionará.

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

Gracias. Funciona. –

Cuestiones relacionadas