2009-06-18 165 views
1

首先,我使用的是Windows,只是爲了說明清楚。我正在使用cmd.exemanage runserver,服務器運行良好。但是,有時候,在一個看似隨機的基礎上,Django只是停止寫入stdout!服務器響應我的請求和一切,但沒有打印。Django停止打印到標準輸出

爲了使它更清晰,我甚至沒有在我的Django代碼中談論print,所以這不成問題。我在說什麼時候打印例如GET /someurl HTTP/1.1,yada-yada ...點擊Ctrl + Break並重新啓動服務器不起作用。但是,如果我退出命令提示符並啓動一個新服務器並運行該服務器,它將再次開始工作。

有關發生了什麼的任何想法?這是與Django 1.0.2 final和Python 2.6.2。

+0

什麼是你使用的Python版本? – conny 2009-06-23 15:06:46

+0

2.6.2,我會更新說明。 – 2009-06-23 15:57:49

回答

0

也許有點延伸,但是在Linux下使用Twisted框架(而不是Django)的Python 2.6下,我的應用程序發送NULL到標準輸出並且stdout被重定向到syslog。我曾以爲這是一個扭曲的框架的syslog實現中的錯誤,但也許更多。你可以告訴記錄或客戶端活動它在丟失標準輸出之前所做的最後一件事情,看看它是否是)總是在少數幾個地方之一,2)如果你發送任何時髦的東西?

0

您是否在代碼中的某處指定了sys.stdoutsys.stderr

+0

不,我確信這絕不會發生。 – 2009-06-19 19:55:01

0

開發服務器有時候可能會很奇怪,只要用ctrl-break來停止它,然後重新開始。

爲了確保服務器本身沒有停止,你可以嘗試的一件事是做一個硬刷新(ctrl-F5),如果它沒有響應,那麼服務器實際上是死的,你只是看到了頁面的緩存版本。

+0

奇怪的是,即使我按Ctrl + Break並重新啓動服務器,它仍然不會輸出任何東西。沒有要求打印,只有「驗證模型,發現0錯誤」,然後版本,我可以通過按Ctrl + Break退出。我總是按Ctrl + F5來確保我重新加載所有內容,並且在Firebug中,我可以看到它確實在這樣做。 – 2009-06-23 08:16:23

0

這看起來很愚蠢,但是你檢查了日誌文件嗎?另外,您可以從urllib或任何您想要的Web客戶端發出大量請求,並嘗試重現該請求。也許你會看到爲什麼發生這種情況的模式。

+0

什麼是日誌文件?我不知道有任何日誌文件。或者你是指我自己的自定義日誌記錄功能?因爲我沒有那個,我真的不想因爲看起來像一個bug而深入瞭解這個。 – 2009-06-23 08:28:23

相關問題