Twisted ReconnectionClientFactory - 自動再接続または明示的にconnector.connect()を呼び出しますか?

StackOverflow https://stackoverflow.com//questions/20014776

質問

ツイストリカインクションクライアントファクトリを使用し、接続が失われると、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)は、そのようにする権利のことです。

  1. self.retryを呼び出す前に 'self.continuetrying'をチェックします(これは 接続が失われた可能性があるため、キー 'stoptry()'
  2. connectorを渡されたコネクタにself.connectorを設定します。
  3. self.retry()を呼び出します(渡されたコネクタがないため、#2でself.connectorが設定されています)。
  4. 再接続パスでもっと多くの操作が必要な将来、再接続クライアント機能実装に変更がある場合は、コード変更なしで自動的に処理されます。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top