为什么Twisted Manhole ConnectionDone是错误的?

时间:2013-01-25 20:12:51

标签: python twisted

我正在使用扭曲的沙井(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()错误,这不是一个非常有趣的事情错误

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

1 个答案:

答案 0 :(得分: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