【发布时间】:2010-11-18 18:23:30
【问题描述】:
有人有这方面的经验吗?我有一个扭曲的应用程序。客户端连接到服务器。我添加了一个功能,如果客户端连接到服务器,但已经有来自该 IP 地址的客户端在运行,它会断开新客户端的连接。
有时,我会关闭客户端计算机(准确地说是虚拟机),而无需手动关闭 Python 程序。当我这样做时,偶尔但经常,服务器不会检测到任何断开连接。当计算机恢复并尝试重新连接时,服务器坚持认为已经存在来自该 IP 的连接。到目前为止我找到的唯一解决方案是重新启动服务器。
没有断开连接会是奇怪的联网事情吗?扭曲的错误?
我 99% 确定这不是我的代码处理断开连接的错误。我的代码设置为每当连接丢失时调用connectionLost,包括关闭机器的大多数情况,它要么记录一个字符串,说明断开连接的情况,要么在发生奇怪的事情时抛出异常。这些东西都没有出现在日志中。
【问题讨论】:
-
Twisted 框架在所有概念级别定义了事件和 eventHandler - 传输/连接、协议等来处理断开连接。所以检查代码会有所帮助。您可以发布表现出该行为的简化版本的代码。
-
@pyfunc:我会挖掘代码。我现在怀疑网络问题,因为我让客户端不断尝试重新连接,并且在某些情况下它最终能够连接(尽管在其他情况下不是)。
标签: python networking network-programming twisted