TLDR: ¿Existe un código reutilizable para volver a conectarse automáticamente a un servidor TCP que a veces falla?Reconexión automática a un host TCP
Estoy escribiendo una aplicación de servidor - llamarlo hal
- que también abre algunas conexiones TCP a otros servidores - entre ellos xbmc
. Lo había escrito originalmente para que cuando xbmc
fallara, el proceso de erlang xbmc
se detendría y posteriormente sería reiniciado por su supervisor.
Aparentemente, esta no es una buena manera de hacer conexiones TCP persistentes en erlang. En primer lugar, realmente no funciona: cuando xbmc
fallaba, los procesos se reiniciaban demasiado rápido, y el supervisor cerraba todo el programa hal
. En segundo lugar, aparentemente no debo usar el supervisor para esto: Erlang Supervisor Strategy For Restarting Connections to Downed Hosts (Según lo leí, esta pregunta vinculada solo responde "¿el supervisor resuelve esto?", Y no es un duplicado de mi pregunta)
Estoy pensando que esto suena como un caso de uso razonablemente común, manteniendo una conexión TCP tan conectada como sea posible, incluso con un host que se apaga de vez en cuando. ¿Hay alguna OTP u otro código de biblioteca que deba usar para lograr esto?
Gracias. No siempre es fácil responder "no" :) Para su próximo proyecto de código abierto, propongo hacer este administrador de conexión: D –
Da la casualidad, ahora estoy escribiendo más o menos. Actualizaré mi respuesta si/cuando se publique. – archaelus