gpt4 book ai didi

twisted - 如何在 Twisted 中的 reactor.connectTCP 之后关闭连接

转载 作者:行者123 更新时间:2023-12-04 23:31:17 28 4
gpt4 key购买 nike

我想问一个关于如何关闭扭曲连接的问题 RPC .
我知道有人问过类似的问题,但似乎没有回答我的问题。
我正在做一些基本的连接,如下图所示:

cfactory = pb.PBClientFactory()
reactor.connectTCP(<host>, <port>, cfactory)
dfr.addCallbacks(<callback>, <errfun>, ...)
...
(in the <callback> func) remote.callRemote('myfunc', ...)

这一切都有效,并且可以满足我的需求。
但问题是我看到连接仍然活跃(“ESTABLISHED”),如果我检查它 netstat -a .
由于我在无限期运行的客户端和服务器之间执行此操作,因此我不能只继续累积事件连接。
出于同样的原因,我也无法停止 react 堆。
那么,有没有办法关闭连接,而不是通过创建自己的协议(protocol)?
我想先检查一下,因为除了这个事实之外,一切都正常工作 - 如果可能的话,我将只添加一个需要的东西,而不是从协议(protocol)设置和所有开始。
感谢您的关注,任何一般性建议将不胜感激。
托尼

最佳答案

remoteRemoteReference .它有一个 broker属性是 twisted.spread.pb.Broker创建它的协议(protocol)实例。与几乎所有协议(protocol)一样,Broker实例有 transport属性,它指的是表示协议(protocol)正在运行的连接的对象。

因此,remote.broker.transport.loseConnection()应该做你想做的。

还有其他选择。您可以捕获 Broker工厂实例:

class MyPBFactory(pb.PBClientFactory):
def buildProtocol(self, addr):
proto = pb.PBClientFactory.buildProtocol(self, addr)
self.proto = proto
return proto

现在你有一个 proto工厂上的属性(但只有在实际建立连接之后,并且没有任何东西可以清理它,所以在连接丢失后它仍然存在 - 但你可以照顾它)。

关于twisted - 如何在 Twisted 中的 reactor.connectTCP 之后关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4811086/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com