4

クライアントにファイルを返すための次の 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つの方法にそれほど大きな違いがあるのはなぜですか?
そして、なぜ3番目の方法はとても遅いのですか?

4

3 に答える 3

1

なぜこれが発生するのかについて正確な答えを提供することはできませんが、http://werkzeug.pocoo.org/docs/wsgi/#werkzeug.wsgi.wrap_fileがあなたの根底にある問題に対処するのに役立つかもしれません。

于 2013-05-27T23:02:44.823 に答える