Reconexión torcidaClentoria: vuelva a conectar automáticamente o llame explícitamente Conector.connect ()?

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

Pregunta

Cuando se usa una facturación de reconexión torcida y se pierde la conexión ¿Debo llamar a Conector.connect () desde el método cliente connectionlost o que sucede automáticamente?

La respuesta puede parecer obvia porque es, después de todo, el reconectingClientFactory , pero la documentación torcida dice algo aquí que me ha preguntado:

"Puede ser útil llamar a conector.connect (): esto se volverá a conectar".

La redacción y el uso del término 'pueden ser útiles' conduce a la pregunta desde que la API DOC para la fábrica de clientes básicos dice lo mismo.

La respuesta de

Max es correcta, pero después de una investigación adicional, creo que la respuesta 'corrector' es la siguiente:

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

Esto le permite realizar cosas especializadas requeridas por su solicitud y luego llame al código de fábrica para permitir que Twisted se encargue de llamar a Reintentar () para usted.

¿Fue útil?

Solución

Mi vieja respuesta no fue totalmente correcta.En su lugar haz esto:

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

Esto le permite realizar cosas especializadas requeridas por su solicitud y luego llame al código de fábrica para permitir que retorse para cuidar llamando a reintentar () para usted.

Otros consejos

Llamar a reconectingClientFactory.clientConnectionLost (yo, conector, razón) es lo correcto que debe hacer, como:

  1. cheques 'self.continuetying' antes de llamar a uno mismo.retry (que es clave, ya que la conexión puede haberse perdido debido a una llamada a 'STOPTRYSING ()'
  2. se ajustan a sí mismo. Conector al conector pasado.
  3. llama a uno mismo. Retry () (que debido a la falta de un conector pasado, utiliza el autodesconécil establecido en el # 2).
  4. Y si hay cambios en la implementación de reconexiónClientoria en el futuro, lo que requeriría más acciones en la ruta de reconexión, se manejarían automáticamente sin cambios de código.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top