在Twisted中,等到连接完全关闭

时间:2010-07-21 22:20:59

标签: python twisted

我想干净地断开连接,然后停止反应堆。但是,如果我这样做:

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

然后我得到一个“以非干净的方式丢失连接”的消息。如果我在它们之间插入time.sleep(1),则连接会完全关闭。我怎么能等到连接真的关闭?

2 个答案:

答案 0 :(得分:4)

您可以收听来自twisted的回调,表示连接已断开连接。 This blog描述了实现此目的的方法。

答案 1 :(得分:0)

我最近一直想知道同样的事情,如何以干净的方式断开我的客户端。虽然客户端是LineReceiver的子类,但我尝试过:

connector.disconnect()

self.factory.close()factory Factory返回buildProtocol()IAddress

reactor.stop()

但我在某些文档中实际发现的是:

self.transport.loseConnection()

它干净地关闭连接。这个问题现在已经很老了,但我希望将来可以帮助某人:)