Django - 在生产中提供MEDIA /上传文件

Chr*_*eid 7 python apache django web

我目前在我的项目urls.py中有这个,最后一行是重要的.

urlpatterns = patterns('',
    url(r'^', include('polls.urls', namespace="polls")),
    url(r'^admin/', include(admin.site.urls)),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

我被告知并且我已经读过,这不适合生产环境.为什么会这样?

Pau*_*per 6

Django被构建为"应用程序服务器",而不是"Web服务器".

换句话说,从Django提供静态文件将比使用Apache或Nginx的性能更差.这些静态内容服务器(1)用C语言编写,(2)针对性能进行了优化.

相比之下,Django是(1)用纯Python编写的,(2)是为开发应用程序而优化的.

请参阅文档.


这可能完全没问题.我已经使用Django在生产中提供静态内容,当我知道负载不高并且我没有提供大文件时.这取决于"生产"实际上是什么样的环境.


仅供参考,常见的制作设置是使用Nignx,Django,Gunicorn和Supervisor.Nginx从磁盘上提供静态内容,并将其余内容反向代理到Gunicorn,后者运行多个Django实例.主管监控Gunicorn并确保它继续运行.这完全取决于您需要的Web应用程序级别.