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

Jon*_*han 5 python logging multithreading handlers

Python 的日志处理程序非常棒。其中一些,例如SMTPHandler可能需要很长时间才能执行(联系 SMTP 服务器等)。它们是否在单独的线程上执行,以免阻塞主程序?

Céd*_*ien 2

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

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

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