【发布时间】:2010-07-21 22:20:58
【问题描述】:
我想彻底断开连接,然后停止反应器。但是,如果我这样做:
controller.connection.disconnect()
reactor.stop()
然后我收到“连接以非干净方式丢失”的消息。如果我在它们之间插入一个time.sleep(1),连接就会干净地关闭。我怎样才能等到连接真正关闭?
【问题讨论】:
我想彻底断开连接,然后停止反应器。但是,如果我这样做:
controller.connection.disconnect()
reactor.stop()
然后我收到“连接以非干净方式丢失”的消息。如果我在它们之间插入一个time.sleep(1),连接就会干净地关闭。我怎样才能等到连接真正关闭?
【问题讨论】:
您可以监听来自 twisted 的回调,这表明连接已断开。 This blog 描述了执行此操作的方法。
【讨论】:
我最近一直在想同样的事情,如何以干净的方式断开我的客户端。虽然客户端是LineReceiver 的子类,但我尝试过:
self.factory.close()(其中factory 是由Factory 的buildProtocol() 返回的IAddress)
但我在一些文档中实际发现的是:
self.transport.loseConnection()
它会干净地关闭连接。这个问题现在已经很老了,但我希望它对未来的人有帮助:)
【讨论】: