加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

有没有办法让python程序在崩溃时运行一个动作?

发布时间:2020-12-20 11:32:24 所属栏目:Python 来源:网络整理
导读:我有一个带有循环的 python脚本,每次经常崩溃并有各种异常,需要重新启动.有没有办法在发生这种情况时运行一个动作,以便我可以收到通知? 解决方法 您可以通过为 sys.excepthook handler分配自定义函数来安装异常挂钩.只要存在未处理的异常(因此退出解释器的
我有一个带有循环的 python脚本,每次经常崩溃并有各种异常,需要重新启动.有没有办法在发生这种情况时运行一个动作,以便我可以收到通知?

解决方法

您可以通过为 sys.excepthook handler分配自定义函数来安装异常挂钩.只要存在未处理的异常(因此退出解释器的异常),就会调用该函数.

import sys

def myexcepthook(type,value,tb):
    import traceback
    from email.mime.text import MIMEText
    from subprocess import Popen,PIPE
    tbtext = ''.join(traceback.format_exception(type,tb))
    msg = MIMEText("There was a problem with your program:nn" + tbtext)
    msg["From"] = "me@example.com"
    msg["To"] = "you@example.com"
    msg["Subject"] = "Program exited with a traceback."
    p = Popen(["/usr/sbin/sendmail","-t"],stdin=PIPE)
    p.communicate(msg.as_string())

sys.excepthook = myexcepthook

只要程序在您的系统上运行sendmail命令,此异常挂钩会在程序退出时通过电子邮件向您发送回溯.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读