Close inactive connections in Twisted

大城市里の小女人 提交于 2019-12-02 08:43:26

问题


I'm running a Twisted server with the LineReceiver protocol. Sometimes clients will disconnect silently, so Twisted keeps the connection open. And because the server doesn't send anything unless requested of it, there's never a TCP timeout. In other words, some connections are never closed server-side.

How can I have Twisted close a connection that's been inactive for a few hours?


回答1:


You can schedule timed events using reactor.callLater. Based on this, there's a helper for adding timeouts to protocols, twisted.protocols.policies.TimeoutMixin.

Another approach is to use TCP keep-alives, which you can enable using the transport's setTcpKeepAlive method.

And another approach is to use application-level keep-alives. Essentially send a ''noop'' once in a while. It doesn't need a response. If the connection has been lost, the extra data in the send buffer will cause the TCP stack to eventually notice.

See also the FAQ entry.



来源:https://stackoverflow.com/questions/11911453/close-inactive-connections-in-twisted

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!