我正在使用 LineReceiver 协议运行 Twisted 服务器。有时客户端会默默地断开连接,因此 Twisted 会保持连接打开。而且由于除非有请求,否则服务器不会发送任何内容,因此永远不会出现 TCP 超时。换句话说,某些连接在服务器端永远不会关闭。
如何让 Twisted 关闭几个小时不活动的连接?
您可以使用安排定时事件reactor.callLater
。基于此,有一个帮助程序可以为协议添加超时,twisted.protocols.policies.TimeoutMixin
.
另一种方法是使用 TCP keep-alive,您可以使用传输的setTcpKeepAlive
method.
另一种方法是使用应用程序级保持活动。本质上是偶尔发送一个“noop”。它不需要回应。如果连接丢失,发送缓冲区中的额外数据将导致 TCP 堆栈最终注意到。
另请参阅常见问题解答入口.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)