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

5 投票
2 回答
664 浏览
提问于 2025-04-17 08:47

Python的日志处理器非常好用。其中一些,比如SMTPHandler,可能会花费比较长的时间来执行(因为需要联系SMTP服务器等等)。那么,这些处理器是在单独的线程中执行的吗?这样就不会阻塞主程序了?

2 个回答

0

不,按照我所知道的,你应该启动一个单独的进程。

2

SMTPHandler 是一个用来发送邮件的工具,它依赖于 smtplib 这个库。当你用这个工具发送邮件时,程序会被暂停,直到邮件成功发送完毕,这个过程中不会创建新的线程。

如果你不想在发送邮件时让程序停下来,就需要自己实现一个 SMTPHandler,并且重写 emit(self, record) 这个方法。

相对来说,SysLogHandler 是一个阻塞性较小的工具,因为它通常是在本地进行通信,并且使用 UDP 协议,这样系统就不需要等待目标的确认。

撰写回答