Закрытие соединения с Perspective Broker в Twisted - PullRequest
1 голос
/ 27 октября 2010

У меня есть программа, серверы которой взаимодействуют друг с другом с помощью удаленных вызовов процедур 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 Ответ

1 голос
/ 27 октября 2010

Другой вариант - reference.broker.transport.loseConnection().

RemoteReference экземплярам, ​​которые создаются через соединение PB, присваивается атрибут broker.Атрибут broker относится к экземпляру протокола, который их создал.Как обычно для протокола, посредник имеет атрибут transport, а транспорт имеет метод loseConnection.

...