在Twisted中,等待连接干净关闭

2 投票
2 回答
2118 浏览
提问于 2025-04-16 01:40

我想要优雅地断开连接,然后停止反应器。但是如果我这样做:

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

我就会收到一个“连接以不优雅的方式丢失”的消息。如果我在它们之间加上一个 time.sleep(1),连接就能优雅地关闭。那么我该怎么做才能等到连接真的关闭呢?

2 个回答

0

最近我也在想同样的问题,怎么才能干净利落地断开我的客户端连接。我的客户端是LineReceiver的一个子类,我尝试了以下几种方法:

connector.disconnect()

self.factory.close()(这里的factory是通过FactorybuildProtocol()方法返回的IAddress

reactor.stop()

但我在一些文档中发现的其实是:

self.transport.loseConnection()

这个方法可以干净地关闭连接。这个问题现在已经有点旧了,但我希望将来能帮助到某些人 :)

4

你可以监听一个来自twisted的回调,这个回调会告诉你连接已经断开了。这个博客介绍了一种实现这个功能的方法。

撰写回答