2010-07-24 152 views
4

如何在python中發生500錯誤時向管理員發送電子郵件。發生500錯誤時向管理員發送電子郵件

我使用的web框架是'bottle'。

+2

來自標題我最初以爲你想一次發送500封電子郵件給那個可憐的管理員! :) – 2010-07-24 10:38:19

回答

8

只需使用@error(code)裝飾定義一個錯誤處理頁面,像這樣:

from bottle import run, error, route 

@error(500) 
def handle_500_error(code): 
    # add mail send code here 
    return "Error message here" 

@route("/test_500") 
def cause_error(): 
    raise Exception 

run() 

只需轉到​​看到它在行動

當然你也可以使用模板的錯誤頁面就像任何其他頁面一樣。我不確定在有錯誤處理程序時是否有辦法獲取內置的瓶子錯誤頁面。

編輯:

很顯然,如果你使用的是最新瓶V0.8,功能要應用的@error裝飾作爲參數接收沒有錯誤代碼,而是一個bottle.HTTPError對象,其中包含異常和回溯。

或者,您可以設置一瓶未設置bottle.app().catchallFalse描述here處理異常,然後用一些適當的WSGI中間件來處理它們併發送電子郵件(例如像this)。

+0

謝謝。其實我想知道是否有任何瓶子提供的東西,我們可以用它發送500個錯誤的電子郵件,如django中所提供的。 (如果我不想寫上面的代碼) – Tauquir 2010-07-26 05:11:29

+0

其實你的建議只能給我發電子郵件。我無法找到它出錯的地方,因爲它不會像django那樣給出任何回溯。那麼,有沒有其他方法? – Tauquir 2010-07-26 07:22:14

+0

我認爲必須有一些方法來獲得例外。我會看看。 – 2010-07-26 21:54:27

1

以下是Bottle documentation的一行。

bottle.HTTPError其他所有未處理的異常將導致500內部服務器錯誤響應,所以他們不會崩潰的WSGI服務器。

由此判斷,您會想要抓住那些Exception s並編寫代碼發送一封電子郵件給任何可能關注的人。您的代碼將進入try區塊,您將獲得bottle.HTTPError例外的一些代碼,然後編碼以捕獲發送所需電子郵件的所有其他Exception

相關問題