Tengo un ReconnectingClientFactory en un módulo. Me gustaría que el módulo sea lo más flexible posible. Solo necesito una conexión TCP única. Utilizo la fábrica como una interfaz persistente para esta conexión. En el pasado, la fábrica respondía a las desconexiones reintentando sin cesar la conexión, nunca informando al script de nivel superior (el script que importa el módulo) que había problemas de conexión.¿Cómo diseño una fábrica retorcida para manejar desconexiones?
He aquí un breve ejemplo de lo que tengo:
Factory(protocol.ReconnectingClientFactory):
def clientConnectionFailed(self, connector, reason):
...
def clientConnectionLost(self, connector, reason):
...
Creo que es mejor si se informo al archivo de nivel superior (el script que importa el módulo) cuando hay problemas de conexión. De esta manera, la secuencia de comandos de nivel superior puede definir el comportamiento de resolución de desconexión en lugar de que esté codificado en el módulo. Pero, ¿cuál es la mejor manera de comunicar los problemas de conexión al script de nivel superior?
Podría presentar una excepción, pero ¿dónde se detectaría? Supongo que el reactor podría atraparlo, pero ¿cómo ayuda eso?
No hay devoluciones de llamada o errores que pueda disparar para informar al script superior del problema de conexión.
La secuencia de comandos superior podría proporcionar funciones específicas [como argumentos] para llamar cuando se producen problemas de conexión. Sin embargo, este es un buen diseño?
Esto parece ser una solución incompleta, ya que solo proporciona una forma de manejar intentos fallidos de conexión, conexiones no perdidas. ¿Cómo se manejan las conexiones perdidas sin cooperación del protocolo? –