在Twisted中,等待连接干净关闭
我想要优雅地断开连接,然后停止反应器。但是如果我这样做:
controller.connection.disconnect()
reactor.stop()
我就会收到一个“连接以不优雅的方式丢失”的消息。如果我在它们之间加上一个 time.sleep(1)
,连接就能优雅地关闭。那么我该怎么做才能等到连接真的关闭呢?
2 个回答
0
最近我也在想同样的问题,怎么才能干净利落地断开我的客户端连接。我的客户端是LineReceiver
的一个子类,我尝试了以下几种方法:
self.factory.close()
(这里的factory
是通过Factory
的buildProtocol()
方法返回的IAddress
)
但我在一些文档中发现的其实是:
self.transport.loseConnection()
这个方法可以干净地关闭连接。这个问题现在已经有点旧了,但我希望将来能帮助到某些人 :)
4
你可以监听一个来自twisted的回调,这个回调会告诉你连接已经断开了。这个博客介绍了一种实现这个功能的方法。