Torcida ReconnectingClientFactory - auto reconectar ou explicitamente chamada de conector.ligar()?
-
21-12-2019 - |
Pergunta
Quando utilizar uma Torcida ReconnectingClientFactory e a conexão é perdida que eu preciso para chamar conector.ligar() de dentro da clientConnectionLost método ou isso acontecer automagicamente?
A resposta pode parecer óbvia, porque é, afinal, o ReconnectingClientFactory mas a Torcida documentação diz algo aqui que tem me perguntando:
"Pode ser útil para chamar conector.ligar() - esta opção irá voltar."
A redação e o uso do termo 'podem ser úteis" leva à questão de como a api doc para o cliente básico de fábrica diz a mesma coisa.
Max resposta está correta, mas depois de mais pesquisas, eu acho que o 'corretor' resposta é como abaixo:
def clientConnectionLost(self, connector, reason):
# do stuff here that is unique to your own requirements, then:
ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
Isso permite que você faça especializados coisas necessárias para a sua aplicação e, em seguida, chamar o código de fábrica para permitir a Torcida para cuidar de chamar de repetição() para você.
Solução
Meu antigo resposta não era totalmente correto.Em vez de o fazer:
def clientConnectionLost(self, connector, reason): # do stuff here that is unique to your own requirements, then: ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
Isso permite que você faça especializados coisas necessárias para a sua aplicação e, em seguida, chamar o código de fábrica para permitir a Torcida para cuidar de chamada de repetição() para você.
Outras dicas
Chamando ReconnectingClientFactory.clientConnectionLost(self, conector, razão) é a coisa certa a fazer, como:
- Verifica auto.continueTrying' antes de chamar auto.repetir (o que é a chave, como a ligação pode ter sido perdida devido a uma chamada para 'stopTrying()'
- Define o self.conector ao conector passado.
- Chama auto.de repetição() (que, devido à falta de um passado conector usa o auto.conjunto de conector em #2).
- E, se houver alterações para o ReconnectingClientFactory implementação no futuro, o que exigiria mais ações na reconexão caminho, eles seriam processados automaticamente, sem que alterações de código.