当使用Twisted ReconnectingClientFactory并且连接丢失时,我是否需要从clientConnectionLost方法中调用connector.connect(),还是自动完成?
答案可能看起来很明显,因为它毕竟是ReconnectingClientFactory ,但Twisted文档中提到了让我感到疑惑的here:
“调用connector.connect()可能很有用 - 这将重新连接。”
术语“可能有用”的措辞和用法导致了这个问题,因为基本客户工厂的api doc说的是同样的事情。
Max的回答是正确的,但经过进一步的研究后,我认为'校正'的答案如下:
def clientConnectionLost(self, connector, reason):
# do stuff here that is unique to your own requirements, then:
ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
这允许您执行应用程序所需的专门操作,然后调用工厂代码以允许Twisted为您负责调用retry()。
答案 0 :(得分:3)
我的旧回答并不完全正确。而是这样做:
def clientConnectionLost(self, connector, reason): # do stuff here that is unique to your own requirements, then: ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
这使您可以执行应用程序所需的专门操作 然后调用工厂代码以允许Twisted来处理 为你调用retry()。
答案 1 :(得分:1)
调用ReconnectingClientFactory.clientConnectionLost(self,connector,reason)是正确的做法,因为它: