我有以下代码:
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
我不确定它是否正确,但我在互联网上找到的零碎信息让我认为它应该有效。基本上我想以块的形式输出一个文件,为此我从我的应用程序函数中传回一个生成器。但是,这只会打印出标题,实际上并没有发回任何数据,谁能告诉我这是为什么?
或者,如果这是完全错误的,那么最好的方法是什么?我无法在内存中缓冲整个文件,因为我将使用的文件可能有千兆字节大。
第三个问题:完成输出后关闭文件的最佳方法是什么?在我发布的代码中,我无论如何都看不到实际关闭文件。
(我正在使用 uWSGI 1.2.4 运行 python 3.2.3)