Python的logging handlers很棒。其中的一些(例如SMTPHandler)可能需要很长时间才能执行(联系SMTP服务器等)。是否在不阻塞主程序的情况下在单独的线程上执行?

最佳答案

SMTPHandler使用smtplib,当使用此库发送电子邮件时,您的进程将被阻止,直到正确发送为止,没有创建线程。

如果不想在发送电子邮件时阻止进程,则必须实现自己的SMTPHandler并重写emit(self, record)方法。

较少阻塞的处理程序是SysLogHandler,因为它通常是本地通信,在UDP中,因此系统不必等待来自目标的任何确认。

09-11 21:58