日志处理程序使用单独的线程吗?

时间:2011-12-21 13:57:30

标签: python multithreading logging handlers

Python的logging handlers很棒。其中一些(例如SMTPHandler)可能需要很长时间才能执行(联系SMTP服务器和所有)。它们是否在一个单独的线程上执行,以至于不阻止主程序?

2 个答案:

答案 0 :(得分:2)

SMTPHandler使用smtplib,在使用此库发送电子邮件时,您的进程会被阻止,直到它被正确发送,没有创建任何线程。

如果您不想在发送电子邮件时阻止您的流程,则必须实施自己的SMTPHandler并覆盖emit(self, record)方法。

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

答案 1 :(得分:0)

不,据我所知,你应该生成一个单独的进程。