4
如果我在安装CherryPy的静态目录,如下所示:从该目录为什么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添加到请求的头文件(例如范围头文件和内容长度)不会在响应中返回 - 我必须自己做。
我能做些什么来使第一种方法更快?
CherryPy不只是像Flask这样的开发服务器吗?对于Flask,推荐使用像Nginx这样的*真实*网络服务器来提供静态文件,并使用'uwsgi'或类似的东西与CherryPy进行交互。 – Blender
我认为Blenders建议适用于生产环境中的任何Python应用程序。即使是小型网站也是一个很好的设计,因为稍后可以更容易地从CDN提供静态文件。 –
@Blender它没有。至少它是[作者认为](http://stackoverflow.com/a/3441801/2072035)。另外WSGI不是必需的,因为CherryPy很好地服务于HTTP服务器角色。尽管我不得不承认,让Nginx在前面总是给路由,静态内容,SSL等提供更多的灵活性。 – saaj