Reconnexion TwistedClientfactory - Reconnexion automatique ou appelez explicitement connecteur.connect ()?

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

Question

Lors de l'utilisation d'une reconnexion de la reconnexion torsadée et que la connexion est perdue, dois-je appeler connecteur.connect () à partir de la méthode clientConnectionLost ou cela se produise automatiquement?

La réponse peut sembler évidente car elle est, après tout, la reconnecteClierfactory mais la documentation torsadée indique quelque chose ici qui me demande:

"Il peut être utile d'appeler connecteur.connect () - cela se reconnectera."

Le libellé et l'utilisation du terme "peut être utile" conduit à la question puisque l'API DOC de l'usine client de base indique la même chose.

La réponse de Max est correcte mais après de nouvelles recherches, je pense que la réponse "correctrice" est aussi ci-dessous:

def clientConnectionLost(self, connector, reason):
    # do stuff here that is unique to your own requirements, then:
    ReconnectingClientFactory.clientConnectionLost(self, connector, reason)

Cela vous permet de faire des choses spécialisées requises par votre application, puis de l'appeler dans le code d'usine pour permettre à Twisted de prendre soin de vous appeler Réessayer () pour vous.

Était-ce utile?

La solution

Ma vieille réponse n'était pas complètement correcte.Fais plutôt cela:

def clientConnectionLost(self, connector, reason):
    # do stuff here that is unique to your own requirements, then:
    ReconnectingClientFactory.clientConnectionLost(self, connector, reason)

Cela vous permet de faire des choses spécialisées requises par votre application. puis appelez le code d'usine pour permettre tordu de prendre soin de Appelant Réessayer () pour vous.

Autres conseils

appeler reconnecttingClientFactory.clientConnectionLost (auto, connecteur, raison) est la bonne chose à faire, comme il:

  1. vérifie "Self.Continuetrying" avant d'appeler Self.ReRy (qui est clé, car la connexion a peut-être été perdue en raison d'un appel à 'Stringtrying ()'
  2. définit Self.Connector sur le connecteur est passé.
  3. appelle self.retry () (qui en raison de l'absence de connecteur passé utilise Self.connector Set in # 2).
  4. et s'il y a des changements dans la mise en œuvre reconnecteClierFactory à l'avenir, ce qui nécessiterait plus d'actions dans le chemin de reconnexion, elles seraient traitées automatiquement sans changements de code.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top