【发布时间】:2013-05-22 18:08:56
【问题描述】:
我有以下 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 种方法之间有这么大的区别?
为什么第三种方法这么慢?
【问题讨论】:
标签: python apache mod-wsgi httpresponse werkzeug