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只是编辑和添加示例? –
我认为这个编辑是可以的。 –