如何捕获protocol.ReconnectingClientFactory中的错误

时间:2012-06-11 15:01:19

标签: twisted

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

我有一个实现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)

我有什么办法可以处理那里的“原因”,这是一个失败对象,这样就可以正确处理错误..?

无论如何,我并不认为自己能够精通Twisted,所以任何帮助都会非常感激。

提前多多感谢。

1 个答案:

答案 0 :(得分:1)

消息Unhandled error in Deferred告诉您错误的来源,甚至暗示如何消除错误。当使用Deferred结果对Failure进行垃圾回收时,它会记录这些消息 - 因为未处理错误。

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

相关问题