2011-04-15 64 views
0

我有一個Django應用程序與MySQL和Redis的運行作爲後端處理Django中的全球500錯誤的最佳做法?

我有一個名爲redis_helper()功能做Redis的查詢。

但有時Redis會崩潰並需要一段時間來啓動,所以我需要返回一個友好的HTTP 500錯誤消息。

的問題是,僅django的定義django/http/__init__.py,不Http500()Http404(Exception)類,所以我在哪裏redis_helper()參與每個視圖函數手動添加try ... except。它感覺有點醜陋,重複着作。

是否有任何方便的方法來提升服務器500錯誤而不是使用return HttpResponseServerError()查看函數?如果我必須自己寫Http500這個文件是哪個文件寫的最好的地方?

謝謝,謝謝!

+0

沒有特定的Http500異常。基本上你不想這樣做,因爲這可能會隱藏你的原始錯誤。留在你的嘗試 - 除了塊。 – 2011-04-15 10:10:47

回答

0

好吧,現在我明白瞭如何Http404作品。所以你必須在某個地方定義這個異常,並在中間件中捕獲它。

0

這聽起來像你沒有try:塊圍繞Redis調用。

是這樣嗎?

如果是這樣,答案是使用try:塊。

所以我必須手動添加嘗試...除了在每個查看函數,其中redis_helper()涉及。

正確。

它感覺有點難看,重複工作。

不正確。每個視圖函數都必須返回一個HttpResponse對象。你必須實際編寫該代碼。

如果編寫視圖函數似乎重複,我很抱歉,但這是他們必須工作的方式。他們必須返回一個HttpResponse對象。


編輯。也。請閱讀這樣的:

http://docs.djangoproject.com/en/1.3/topics/http/views/#the-500-server-error-view

+0

好吧,我有'嘗試'塊,但是如果有什麼問題,我應該怎樣'提升'? – est 2011-04-15 10:58:14

+0

@est:'raise'?你爲什麼要提什麼?您可以返回一個帶有錯誤消息的HttpResponse。你爲什麼要「提高」某些東西? – 2011-04-15 11:38:46

+0

@ S.Lott通過「返回一個HttpResponse」,你的意思是我必須修改views.py中調用'edis_helper()'的每個函數?我認爲發明'提高Http500'的意義在於避免這種情況。 – est 2011-04-18 04:13:38