Python的logging handlers很棒.其中一些,例如SMTPHandler可能需要很长时间才能执行(联系SMTP服务器和所有).它们是否在一个单独的线程上执行,以至于不阻止主程序?
解决方法:
SMTPHandler使用smtplib,当使用此库发送电子邮件时,您的进程将被阻止,直到它被正确发送,没有创建任何线程.
如果您不想在发送电子邮件时阻止您的进程,则必须实现自己的SMTPHandler并覆盖emit(self,record)方法.
较少的阻塞处理程序是SysLogHandler,因为它通常是本地通信,而在UDP中,因此系统不等待来自目标的任何确认.