如何捕获协议中的错误.重新连接客户端工厂



我已经在寻找解决方案几个小时了,也许我只是错过了一些东西。

我有一个实现protocol.ReconnectingClientFactory的工厂,它工作得很好,但是,每当程序结束运行时,我都会在日志中收到一堆Unhandled error in Deferred运行时发生的每次断开连接的消息,例如

2012-06-14 12:28:51+0100 [-] Unhandled error in Deferred:
2012-06-14 12:28:51+0100 [-] Unhandled Error
        Traceback (most recent call last):
        Failure: twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion: Connection lost.

有什么方法可以在运行时以某种方式"处理"这些,这样我的日志就不会在最后被垃圾邮件发送。.(或避免以某种方式发送垃圾邮件。我真的不在乎解决方案是什么,我已经有以下方法为我记录所有内容

def clientConnectionLost(self, connector, reason):
        log.msg('Lost connection. Reason: %s' % reason)

我是否可以对其中的"原因"(即 Failure 对象)做些什么,以便正确处理错误..?

无论如何,我并不声称自己精通 Twisted,所以任何帮助将不胜感激。

提前非常感谢。

Unhandled error in Deferred的消息告诉您错误来自何处,甚至暗示如何消除它。 当垃圾回收Deferred并显示Failure结果时,它会记录这些消息 - 因为错误未得到处理。

将错误处理程序(和 errback)添加到以这种方式失败的Deferred,并根据需要处理错误(包括忽略它,如果这适合您的应用程序)。

最新更新