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()