我有以下 Werkzeug 应用程序用于将文件返回给客户端:
from werkzeug.wrappers import Request, Response
@Request.application
def application(request):
fileObj = file(r'C:\test.pdf','rb')
response = Response( response=fileObj.read() )
response.headers['content-type'] = 'application/pdf'
return response
我要关注的部分是这个:
response = Response( response=fileObj.read() )
在这种情况下,响应大约需要 500 毫秒(C:\test.pdf
是一个 4 MB 的文件。Web 服务器在我的本地计算机中)。
但是,如果我将该行重写为:
response = Response()
response.response = fileObj
现在响应大约需要 1500 毫秒。(慢 3 倍)
如果这样写:
response = Response()
response.response = fileObj.read()
现在响应大约需要 80 秒(没错,80 秒)。
为什么这3种方法有这么大的区别?
为什么第三种方法这么慢?