Twisted ReconnectionClientFactory - 自動再接続または明示的にconnector.connect()を呼び出しますか?
-
21-12-2019 - |
質問
ツイストリカインクションクライアントファクトリを使用し、接続が失われると、ClientConnectionLostメソッド内からconnector.connect()を呼び出す必要があります。または自動的に起こるのですか?
答えは、結局のところ、ReconnectionClientFactory ですが、Twisted Documentationは何か ここ それは私に疑問に思います:
"Connector.connect() - これが再接続するのに役立ちます。"
基本的なクライアントファクトリーのAPI DOCは同じことを言うので、「役に立つ」という用語と使用は問題につながります。
マックスの答えは正しいですが、さらに研究の後、「補正者」の答えは以下の通りです。
def clientConnectionLost(self, connector, reason):
# do stuff here that is unique to your own requirements, then:
ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
.
これにより、アプリケーションに必要な特別なものをやり、次に工場コードに電話をかけて、Twistedがあなたのために呼び出し()を呼び出すことを許可することができます。
解決
私の古い答えは完全には正しくありませんでした。代わりにこれを行います:
.def clientConnectionLost(self, connector, reason): # do stuff here that is unique to your own requirements, then: ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
これにより、アプリケーションが必要とする特別なものをすることができます それから工場コードに電話をかけるために、ねじれになる あなたのためにretry()を呼び出します。
他のヒント
Calling ReconnectionClientFactory.ClientConnectionLost(Self、Connector、Reason)は、そのようにする権利のことです。
- self.retryを呼び出す前に 'self.continuetrying'をチェックします(これは 接続が失われた可能性があるため、キー 'stoptry()'
- connectorを渡されたコネクタにself.connectorを設定します。
- self.retry()を呼び出します(渡されたコネクタがないため、#2でself.connectorが設定されています)。 再接続パスでもっと多くの操作が必要な将来、再接続クライアント機能実装に変更がある場合は、コード変更なしで自動的に処理されます。
所属していません StackOverflow