2010-10-27 59 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方法。