¿Cómo construir servidores Twisted que sean capaces de hacer hot code swap en Python?

He desarrollado un conjunto de servidores de transmisión de audio, todos ellos usan Twisted, y están en Python, por supuesto. Funcionan, pero un problema me sigue preocupando, cuando encontré algunos errores allí en el servidor en ejecución, o quiero agregar algo al servidor, necesito detenerlos y comenzar. A diferencia de los servidores HTTP, está bien reiniciarlos cada vez, pero no está bien con los servidores de transmisión de audio. Una vez que reinicio mi servidor de transmisión, significa que mis usuarios se encontrarán desconectados.

Intenté configurar una boca de acceso (un servicio ssh para servidores Twisted, puede iniciar sesión y escribir el código Python en la consola para hacer algo), y conectarme a la consola, recargar los módulos Python sobre la marcha. A veces funciona, pero es difícil de controlar. Nunca se sabe cuántas instancias de clase antigua hay en el servidor, y algunas de ellas pueden ser difíciles de alcanzar, y las relaciones de clase serían muy complejas. Además, puede funcionar en algunas situaciones, pero a veces realmente necesita reiniciar el servidor, por ejemplo, está ejecutando el servidor con el reactor selector y desea ejecutarlo con el reactor epoll, luego debe reiniciarlo. Otro ejemplo, cuando el uso de memoria es demasiado alto, también debe reiniciarlos.

Para construir dicho sistema, se me ocurre una idea, creo que es posible transferir esas conexiones y datos de un proceso a otro. Por ejemplo:

Tenemos un servidor llamado Broadcasting, y la instancia en ejecución está bajo rev.123, y queremos reemplazarlo por rev.124.

Broadcasting rev.123 is running....
Startup Broadcasting rev.124 ....
Broadcasting rev.124 is stand by
Hand over connections from instance of rev.123 to instance of rev.124
Stop Broadcasting rev. 123 instance

es posible? No tengo idea de si la vida útil de los manejadores de socket está vinculada a procesos o no, pensé que los sockets creados por un proceso se cerrarán cuando se elimine el proceso creador, pero no estoy seguro. Si es posible, ¿hay alguna guía o artículo para diseñar este tipo de mecanismo de intercambio de código activo? ¿Y hay algo que pueda lograr lo que quiero para Twisted ya hecho?

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta