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