2011-11-04 65 views
0

我正在Django調試模式下工作。我有一個顯示大量的圖像 Django視圖,像1000 以前,我會發送針對每個圖像以下的Django響應:Django在顯示大量靜態內容時斷了管道?

django.http.HttpResponseRedirect("/static/thumbs/%s" % thumbnail_filename(url)) 

即我被重定向到DJANGO靜態文件服務。 該頁面將加載,然後圖像將開始流入。

我切換到使用靜態文件服務(仍處於調試模式),使用Django靜態應用程序。現在的runserver日誌顯示更快速地加載圖像,但它與下面的錯誤打破了幾秒鐘:

self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 

在瀏覽器端,我看到Chrome崩潰的消息「喔唷,崩潰啦!」。

如何解決此錯誤?

+0

好了,因爲瀏覽器崩潰管道損壞。所以,不要讓瀏覽器崩潰。 –

+0

我會再檢查一下。你確定問題不是無效的數據,或類似? –

回答

0

我最近碰到這個問題。 Django不應該在生產中返回靜態文件。在默認的Django配置中,靜態文件應該由Django前面的專用網絡服務器(例如Nginx,Apache等)服務器提供。

爲了能夠使用Django提供靜態文件,Django可以選擇使用名爲django.contrib.staticfiles的應用程序,該應用程序應該包含在INSTALLED_APPS設置中。

默認情況下INSTALLED_APPS = [],所以你需要手動添加它,例如:

INSTALLED_APPS = [ django.contrib.staticfiles ]