Потоковая передача файлов WSGI с генератором

У меня есть следующий код:

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

Я не уверен, что это правильно, но клочки информации, которую я нашел в интернете, заставили меня думать, что это должно сработать. По сути, я хочу передать файл частями и сделать это, передавая генератор обратно из функции приложения. Однако это только распечатывает заголовки и фактически не отправляет обратно какие-либо данные, может кто-нибудь сказать мне, почему это так?

В качестве альтернативы, если это полностью неправильно, каков наилучший способ сделать это? Я не могу буферизовать весь файл в памяти, поскольку файлы, с которыми я буду работать, потенциально имеют размер в гигабайты.

Третичный вопрос: каков наилучший способ закрыть файл, как только я закончу его выводить? В коде, который я разместил, я все равно не вижу, как на самом деле закрыть файл.

(Я использую Python 3.2.3 с uWSGI 1.2.4)

Ответы на вопрос(1)

Ваш ответ на вопрос