WSGI-Datei-Streaming mit einem Generator

Ich habe folgenden Code:

def application(env, start_response):
    path = process(env)
    fh = open(path,'r')
    start_response('200 OK', [('Content-Type','application/octet-stream')])
    return fbuffer(fh,10000)


def fbuffer(f, chunk_size):
    '''Generator to buffer file chunks'''  
    while True:
        chunk = f.read(chunk_size)      
        if not chunk: break
        yield chunk

Ich bin mir nicht sicher, ob es richtig ist, aber die Informationsfetzen, die ich im Internet gefunden habe, haben mich zu dem Schluss gebracht, dass es funktionieren sollte. Grundsätzlich möchte ich eine Datei in Blöcken streamen und dazu einen Generator von meiner Anwendungsfunktion zurückgeben. Dies druckt jedoch nur die Überschriften aus und sendet tatsächlich keine Daten zurück. Kann mir jemand sagen, warum dies so ist?

Alternativ, wenn dies völlig falsch ist, was ist der beste Weg, dies zu tun? Ich kann nicht die gesamte Datei im Speicher puffern, da die Dateien, mit denen ich arbeiten werde, möglicherweise Gigabyte groß sind.

Tertiäre Frage: Wie kann ich die Datei nach der Ausgabe am besten schließen? In dem Code, den ich gepostet habe, sehe ich sowieso nicht, um die Datei tatsächlich zu schließen.

(Ich verwende Python 3.2.3 mit uWSGI 1.2.4.)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage