0
基本上我希望在線程內發生未處理的異常時使用Django mail_admins
收到一封電子郵件。目前,我有一個處理POST請求的視圖,它看起來像:如何捕獲python線程中發生的異常。線程執行?
import threading
# ...
def post(self, request, *args, **kwargs):
# Some stuff...
for message in entry['messaging']:
t = threading.Thread(
target=self.local_handler,
args=(message, page_id)
)
t.setDaemon(True)
t.start()
# Some more stuff
現在,當任何異常情況發生,它不是處理,它會在服務器日誌中顯示。這樣的事情:
Exception in thread Thread-2:
Traceback (most recent call last):
...
有沒有辦法通過電子郵件接收這些回溯? 在我開始使用線程之前,我正在收到電子郵件,但現在它不再工作。
編輯:
正如@伊萬 - miljkovic在他的回答表明linnking了一個類似的問題的解決方案爲我工作。
所以,基本上我必須抓住異常的線程函數:
import threading
from django.core.mail import mail_admins
# ...
def local_handler(self, message, page_id):
try:
# do stuff
except: # Any not handled exception will send an email with the traceback
import traceback
details = traceback.format_exc()
mail_admins('Backgrond execption happened', details)
def post(self, request, *args, **kwargs):
# Some stuff...
for message in entry['messaging']:
t = threading.Thread(
target=self.local_handler,
args=(message, page_id)
)
t.setDaemon(True)
t.start()
# Some more stuff
不錯,我把嘗試/除了在線程的調用者和它發送電子郵件。你認爲我應該刪除這個問題,因爲它看起來像一個重複的o只是編輯和添加示例? –
我認爲這個編輯是可以的。 –