gpt4 book ai didi

Python 日志记录 SMTPHandler - 处理离线 SMTP 服务器

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:06 25 4
gpt4 key购买 nike

我已经为我的新 python 脚本设置了日志记录模块。我有两个处理程序,一个将内容发送到文件,另一个用于电子邮件警报。 SMTPHandler 设置为发送 ERROR 级别或更高级别的任何内容。

一切正常,除非 SMTP 连接失败。如果 SMTP 服务器没有响应或身份验证失败(它需要 SMTP 身份验证),那么整个脚本就死掉了。

我是 python 的新手,所以我想弄清楚如何捕获 SMTPHandler 引发的异常,以便通过电子邮件发送日志消息的任何问题都不会影响我的整个脚本。由于我还将错误写入日志文件,如果 SMTP 警报失败,我只想继续前进,而不是停止任何事情。

如果我需要一个“try:”语句,它会绕过 logging.handlers.SMTPHandler 设置,还是绕过对 my_logger.error() 的单独调用?

最佳答案

记录期间发生的异常不应停止您的脚本,尽管它们可能会导致将回溯打印到 sys.stderr。为了防止这种打印输出,请执行以下操作:

logging.raiseExceptions = 0

这不是默认设置(因为在开发中您通常想了解失败情况)但在生产中,不应设置 raiseExceptions

您应该会发现 SMTPHandler 将在下次记录错误(或更高级别)时尝试重新连接。

logging 确实通过SystemExitKeyboardInterrupt 异常,但是应该处理所有其他异常不会导致使用日志记录的应用程序终止。如果您发现情况并非如此,请发布异常的具体细节,这些异常正在通过并导致您的脚本终止,以及您的 Python/操作系统版本。请记住,如果存在导致处理程序阻塞的网络超时(例如,如果 DNS 查找需要很长时间,或者如果 SMTP 连接需要很长时间),脚本可能会挂起。

关于Python 日志记录 SMTPHandler - 处理离线 SMTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com