与服务电影文件时Django的MemoryError

时间:2011-01-25 09:15:33

标签: django lighttpd fastcgi

在我的Django应用程序中,我列出了包含电影(大约400 MB)的目录的内容。当我尝试在浏览器中播放电影时,我得到了MemoryError。我在“媒体”文件夹中有这个电影内容,我已将其标记为静态。

我相信这部电影应该直接通过我的网络服务器提供,而不会将请求传递给Django。在我的配置中是否存在一些错误,或者整体上有一个不同的解决方案可用于提供电影,就像我的情况一样。

我正在使用带有Django和FCGI的lighttpd。

感谢。

3 个答案:

答案 0 :(得分:1)

因为你在内存中阅读了整个文件,所以内存不足。在服务之前缓冲它。从django urls.py中删除静态URL配置,并配置由lighthttpd提供的URL。

但对于那种尺寸的电影来说,最好的方式就是流媒体。看看任何媒体流服务器,看看它是否对您有所帮助。这可能对你有所帮助。 Streaming movies by flowplayer and lighthttpd

- 西

答案 1 :(得分:0)

可能是您没有配置lighttpd来处理/media/本身的请求,而Django正在调试模式下运行(DEBUG = True中的settings.py)。

如果您关注Django自己的docs for lighttpd deployment,这不应该发生。

答案 2 :(得分:0)

我自己解决了错误。

实际上问题是我的lighttpd服务器配置错误。问题是我配置了我的网络服务器,将每个请求重定向到Django,并允许Django处理请求并通过网络服务器为响应提供服务。

所以,发生的事情是当我请求播放一个大型电影文件(比如大约400 MB)时,这个请求转到了Django,不知怎的,Django正在将文件加载到内存中。

由于它是一个内存有限的嵌入式设备,Django抛出了“MemoryError”。

我改变了我的网络服务器的配置,一切都像魅力一样。

希望这可以帮助将来的某个人。干杯!