2010-07-06 11 views
7

Estoy tratando de utilizar twisted para crear un clúster de computadoras que ejecutan un programa en un fragmento de un conjunto de datos más grande.twisted: un cliente, muchos servidores

Mis "servidores" reciben un trozo de datos del cliente y ejecutan el comando x en él.

Mi "cliente" se conecta a varios servidores dándoles a cada uno un pedazo de datos y diciéndoles con qué parámetros ejecutar el comando x.

Mi pregunta es: ¿Hay una manera de configurar el circuito del reactor para conectar a muchos servidores:

reactor.connectTCP('localhost', PORT, BlastFactory()) 
reactor.run() 

o tengo que cambiar cliente y el servidor en mi paradigma?

+0

estudio. – mcandre

+0

"Conectarse a [lo que sea que sean los clientes]" no es cómo funciona TCP-IP: los clientes hacen la conexión, los servidores se conectan _to_ (también puede tener "pares" que son servidores _y_ clientes, aunque pocos protocolos populares, excepto los de igual a igual, lo hacen). –

+0

@Alex Martelli: Es un tipo-o. Todavía estoy confundiendo clientes y servidores en este punto. –

Respuesta

8

Simplemente llame al connectTCP varias veces.

El truco, por supuesto, es que reactor.run() bloques "para siempre" (todo el tiempo de ejecución de su programa) por lo que no quieren llamar que varias veces.

Tiene varias opciones; puede configurar una llamada programada para hacer conexiones futuras, o puede iniciar nuevas conexiones desde eventos en su conexión (como connectionLost o clientConnectionFailed).

O, en el más simple, sólo puede configurar varios intentos de conexión antes de reactor.run() arranca todo el espectáculo, así: xmlrpclib

for host in hosts: 
    reactor.connectTCP(host, PORT, BlastFactory()) 
reactor.run() 
+0

¡No sabía que podía hacer eso, pequeñito! –