twisted: один клиент, много серверов

Я пытаюсь использовать twisted для создания кластера компьютеров, которые запускают одну программу на части большего набора данных.

мои "серверы" получают кусок данных от клиента и запускают команду x на нем.

мой "клиент" подключается к нескольким серверам, предоставляя им каждый кусок данных и сообщая им, с какими параметрами запускать команду X.

мой вопрос: есть ли способ настроить цикл реактора для подключения ко многим серверам:

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

или должен ли я поменять клиент и сервер в моей парадигме?

1 ответов


просто позвони connectTCP несколько раз.

фокус, конечно, в том, что reactor.run() блокирует "навсегда" (все время выполнения вашей программы), поэтому вы не хотите вызывать это несколько раз.

у вас есть несколько вариантов; вы можете настроить звонок, чтобы в дальнейшем соединения, или вы можете начать новые связи с событиями на связи (например,connectionLost или clientConnectionFailed).

или, как минимум, вы можете просто настроить несколько попыток подключения до reactor.run() стартует все шоу, как это:

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