在Twisted中关闭非活动连接

时间:2012-08-11 02:42:04

标签: python twisted

我正在使用LineReceiver协议运行Twisted服务器。有时客户端会以静默方式断开连接,因此Twisted会保持连接打开。并且因为除非请求服务器,否则服务器不发送任何内容,因此从不会发生TCP超时。换句话说,某些连接永远不会在服务器端关闭。

如何让Twisted关闭几个小时内一直处于非活动状态的连接?

1 个答案:

答案 0 :(得分:2)

您可以使用reactor.callLater安排定时事件。基于此,有一个助手可以为协议twisted.protocols.policies.TimeoutMixin添加超时。

另一种方法是使用TCP keep-alives,您可以使用传输的setTcpKeepAlive方法启用它。

另一种方法是使用应用程序级别的保持活动。基本上偶尔发送一个''noop''。它不需要回复。如果连接丢失,发送缓冲区中的额外数据将导致TCP堆栈最终被注意到。

另请参阅FAQ entry

相关问题