python – 为什么Twisted Manhole ConnectionDone是一个错误?

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

但是,结果,日志会出现ConnectionDone()错误,这不是一个非常有趣的错误.

什么是适当的改变,以避免得到这个(可能,其他一些)不完全错误?可能会过滤twisted.python.failure.Failure案件?从哪里来的ConnectionDone()甚至提出了,为什么?

最佳答案 在连接关闭后,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
点赞