в Twisted, дождитесь, пока соединение не закроется чисто - PullRequest
2 голосов
/ 22 июля 2010

Я хочу отключить чисто, а затем остановить реактор.Однако, если я сделаю это:

controller.connection.disconnect()
reactor.stop()

, я получу сообщение «Соединение было потеряно не чистым способом»Если я вставлю time.sleep(1) между ними, соединение будет закрыто.Как я могу ждать, пока соединение действительно не закроется?

Ответы [ 2 ]

4 голосов
/ 22 июля 2010

Вы можете прослушивать обратный вызов от Twisted, который указывает, что соединение было отключено. Этот блог описывает подход к этому.

0 голосов
/ 24 сентября 2013

В последнее время я размышлял об одном и том же: как чистым образом отключить моего клиента.Пока клиент является подклассом LineReceiver, я пытался:

connector.disconnect()

self.factory.close() (где factory равно IAddress возвращено Factory buildProtocol())

reactor.stop()

но в некоторых документах я обнаружил:

self.transport.loseConnection()

и он закрывает соединение чисто.Сейчас вопрос довольно старый, но я надеюсь, что он поможет кому-нибудь в будущем:)

...