ReconnectingClientClientFantFactory - Riconnessione automatica o connettore di chiamata esplicitamente. Connect ()?

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

Domanda

Quando si utilizza una riconnectClittyClient intrecciata e la connessione viene persa, è necessario chiamare il connettore.Connect () dal metodo clientConnectionLost o succede automaticamente?

La risposta potrebbe sembrare ovvia perché è, dopo tutto, la riconnectingclientFactory ma la documentazione contorta dice qualcosa qui che mi ha chiesto:

.

"Potrebbe essere utile chiamare connettore.Connect () - questo si riconnetterà."

La formulazione e l'uso del termine "possono essere utili" conducono alla domanda poiché l'API DOC per la fabbrica del cliente di base dice la stessa cosa.

La risposta di Max è corretta ma dopo un'ulteriore ricerca, penso che la risposta "correttore" sia di seguito:

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

Ciò consente di fare cose specializzate richieste dalla tua applicazione e quindi chiamare il codice di fabbrica per consentire a Twisted di prendersi cura di richiamare il retry () per te.

È stato utile?

Soluzione

La mia vecchia risposta non era completamente corretta.Invece fare questo:

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

Ciò consente di fare cose specializzate richieste dalla tua applicazione e quindi chiamare il codice di fabbrica per consentire attorno a prendersi cura di Calling Retry () per te.

Altri suggerimenti

Chiamare RiconnectINGLIENTFENDFATTORY.ClientConnectionLost (Sé, Connettore, Motivo) è la cosa giusta da fare, come:

    .
  1. controlla 'self.continuerying' prima di chiamare self.retria (che è chiave, poiché la connessione potrebbe essere stata persa a causa di una chiamata a 'Strutturare ()'
  2. Imposta self.connector sul connettore passato in.
  3. chiama self.remby () (che a causa della mancanza di un connettore superato utilizza il set di self.connector in # 2).
  4. E se ci sono modifiche all'implementazione di riconnectionClientFantFant in futuro che richiederebbero più azioni nel percorso di riconnessione, verranno gestiti automaticamente senza modifiche al codice.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top