3

我正在使用扭曲的沙井(https://github.com/HoverHell/pyaux/blob/master/pyaux/runlib.py#L126),我还将 Twisted 捕获的错误发送到 python 日志记录(https://github. com/HoverHell/pyaux/blob/master/pyaux/twisted_aux.py#L9)。

但是,结果,日志会ConnectionDone()出现错误,这作为error并不是一件很有趣的事情。

为了避免出现这种(可能还有其他一些)不完全错误的错误,应该进行哪些更改?过滤twisted.python.failure.Failure案例,也许?ConnectionDone() 甚至从哪里提出来,为什么?

4

1 回答 1

7

ConnectionDone() 实例在连接关闭后提供给 connectionLost() 回调。当客户端决定关闭连接时,您应该会看到这一点。您绝对不想将失败过滤掉。您可以将失败视为异常的“异步类比”。通常要做的事情,而不是看到某种异常是这样的:

from twisted.internet import error

...

def connectionLost(self, reason):
    if reason.check(error.ConnectionDone):
        # this is normal, ignore this
        pass
    else:
        # do whatever you have been doing for logging
于 2013-01-27T00:04:07.287 回答