2010-10-27 41 views
1

我有一个程序,它使用Twisted的远程过程调用来相互交互服务器,并且在关闭连接时不再需要它们时遇到问题。连接应该能够在双方中关闭。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()来关闭连接,但我不认为这是正确的方法。

回答

1

另一种选择是reference.broker.transport.loseConnection()

RemoteReference通过PB连接创建的实例具有broker属性。 broker属性是指创建它们的协议实例。像通常的协议一样,代理具有transport属性,而传输具有loseConnection方法。