Torcida ReconnectingClientFactory - auto reconectar ou explicitamente chamada de conector.ligar()?

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

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ê.

Foi útil?

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:

  1. 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()'
  2. Define o self.conector ao conector passado.
  3. Chama auto.de repetição() (que, devido à falta de um passado conector usa o auto.conjunto de conector em #2).
  4. 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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top