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

标签 python twisted

我正在使用 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() 甚至从哪里引发,为什么?

最佳答案

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

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

关于python - 为什么 Twisted Manhole ConnectionDone 是一个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14529630/

相关文章:

python - 如何将字符串日期(YYYY-MM-DD)从 SQL 数据库转换为 python 中的 matplotlib 日期?

python - 使用 HTTPServer 时如何映射传入的 "path"请求?

python - BeautifulSoup 标签删除意外结果

python - 每天使用 twisted 重置 redis 键

python - 在单独的线程中扭曲传输。

python - Twisted > 如何读取比 TCP 帧长度更长的 TCP 消息,例如来自窗口 TCP 客户端的 1380 字节

python - 如何使用 Nose 测试将 python 脚本作为测试套件运行(一起运行一组测试)?

python - 预测输入大小与训练输入大小不同的 LSTM 时间序列错误

twisted - 以扭曲的方式在服务器和客户端之间发送数据

python - Pip 不会在 Windows 上安装 Twisted