4

次のように、CherryPy に静的ディレクトリをマウントすると、次のようになります。

wwwroot_config = { '/': 
                      { 'tools.staticdir.on': True, 
                        'tools.staticdir.dir': '/path/to/dir' } }

cherrypy.tree.mount(root, '/', config = wwwroot_config)

そのディレクトリからのファイルのダウンロードはかなり遅くなります。

ただし、独自の WSGI アプリを作成すると...

self.wsgi_server = wsgiserver.CherryPyWSGIServer((self.bindaddress, self.port), self.download_file, numthreads = 1)

self.download_file には、基本的に次のものが含まれています。

return serve_file(theFile, "application/x-download", "attachment", os.path.basename(theFile), debug = True)

速度が 4 ~ 5 倍速くなります。

ただし、この方法は柔軟ではありません。なぜなら、serve_file が要求に追加するヘッダー (範囲ヘッダーやコンテンツの長さなど) が応答で返されないためです。自分でやらなければなりません。

最初の方法をより速くするためにできることはありますか?

4

1 に答える 1