我正在为一个Django网络应用程序进行原型设计,该应用程序将向用户提供静态媒体文件(PDF,电影等)。我要实现的功能之一是动态URL。关键是为每次访问尝试生成不同的URL。当用户请求文件列表时,我将生成链接并将其保存到数据库。当点击其中一些链接时,我将返回所需的内容并清除数据库中的链接。
我认为通过Django提供媒体远离最佳实践。应该不惜一切代价避免吗?通过非Django应用程序(Perl脚本或其他东西)访问这些文件似乎是否合理?
答案 0 :(得分:1)
我认为通过Django提供媒体远离最佳实践。
正确。官方文档中也是discouraged。
是否应该不惜一切代价避免?
所有费用?可能不是。如果请求的数量和服务的数据量(相当)足够低,那么使用Django提供静态文件不会对系统的性能产生负面影响。
通过非Django应用程序(Perl脚本或其他东西)访问这些文件似乎是否合理?
一般回答:是的。如果不了解您计划的细节,很难给出更好的答案。
答案 1 :(得分:0)
使用django只是为了一些小的开发,禁止;)用于生产 甚至是django team propose web server to serve static files 你可以嵌入cherrypy这将是更好的练习。
答案 2 :(得分:0)
Django iteself声称这是效率不高 不安全。至于我,django静态文件服务只能在开发环境中使用。相当小或大,它不能用于生产......
Documentatin about django static serve
答案 3 :(得分:0)
我认为这个问题是错误的。
Django能够提供静态文件,但默认情况下它在生产时被禁用,并且明确指出它仅用于开发目的。
所以,每个人都同意使用django来提供静态文件是一个坏主意: - )
但是,正如你所说,你不想使用django来提供静态文件,你想使用django在文件下载时实现某种“安全性”。
据我了解,该文件根本不是静态的;相反,它绝对是动态的!
我认为你有两种可能的选择:
我认为第二点需要更多细节
提供文件需要一些时间;使用django来提供服务并不比其他方法效率低(大部分时间花在等待I / O上),但它可能会消耗一个线程或服务器上的进程。
如果您计划同时拥有多个连接,这种方法可能会有严重的缺陷;另一方面,如果你需要向有限的受众提供小文件,那么它可能完全没问题。
答案 4 :(得分:0)
你不能使用NGINX及其安全链接模块吗?
用django流式传输文件......很慢而且很愚蠢
如果你真的必须使用python通过HTTP传输文件,至少使用Whizzer或Twisted。它将具有良好的性能。他们都可以很容易地挂进django的ORM。