¿Manera adecuada de implementar un cliente Direct Connect en Twisted?

Estoy trabajando en escribir un cliente Python para redes Direct Connect P2P. Esencialmente, funciona al conectarse a un servidor central y responder a otros usuarios que están buscando archivos.

Ocasionalmente, otro cliente nos pedirá que nos conectemos con ellos y es posible que empiecen a descargar un archivo de nosotros. Esta es una conexión directa con el otro cliente y no pasa por el servidor central.

¿Cuál es la mejor manera de manejar estas conexiones con otros clientes? Actualmente estoy usando un reactor retorcido para conectarme al servidor, pero ¿es mejor tener múltiples reactores, uno por cliente, con cada uno ejecutándose en un subproceso diferente? ¿O sería mejor tener un script de Python completamente separado que realice la conexión al cliente?

Si hay alguna otra solución que no conozca, me encantaría escucharla. Soy nuevo en la progtwigción con Twisted, así que estoy abierto a sugerencias y otros recursos.

¡Gracias!

Sin conocer todos los detalles del protocolo, seguiría recomendando el uso de un solo reactor: el reactor se escala bastante bien (especialmente los avanzados como el PollReactor ) y así evitará la sobrecarga conectada con los hilos (así es como Twisted y otros async Los sistemas obtienen su impulso de rendimiento fundamental, después de todo (evitando tales gastos generales). En la práctica, los subprocesos en Twisted son útiles principalmente cuando necesitas interactuar con una biblioteca cuyas funciones podrían bloquearte.