我有一个程序,它使用Twisted的远程过程调用让服务器相互交互,并且当不再需要它时关闭连接会遇到问题。连接应该能够在两侧关闭。
案例1:如何关闭连接部分的连接?
factory = pb.PBClientFactory()
reactor.connectTCP(ip, port, factory)
deferred = factory.login(credentials.UsernamePassword(username, password), client=self)
deferred.addCallbacks(self.connectedToServer, self.errorConnectingToServer)
def connectedToServer(self, server):
self.server = server
# Closing connection comes here
案例2:如何关闭服务器部分中的连接?
class MyPerspective(pb.Avatar):
def connected(self, server):
self.client = server
# Closing connection comes here
目前我使用提升pb.Error()来关闭连接,但我不认为这是正确的方法。
答案 0 :(得分:1)
另一个选项是reference.broker.transport.loseConnection()
。
RemoteReference
个实例被赋予broker
属性。 broker
属性是指创建它们的协议实例。与协议一样,代理具有transport
属性,并且传输具有loseConnection
方法。