2010-07-06 14 views
7

Próbuję użyć skrętu, aby utworzyć grupę komputerów, które uruchamiają jeden program na kawałku większego zestawu danych.Skręcona: jeden klient, wiele serwerów

Moje "serwery" odbierają fragment danych od klienta i uruchamiają na nim polecenie x.

Mój "klient" łączy się z wieloma serwerami, podając każdemu fragment danych i informując, jakie parametry uruchamiać polecenie x.

Moje pytanie brzmi: czy jest jakiś sposób, aby skonfigurować pętli reaktora do łączenia się z wieloma serwerami:

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

czy muszę zamienić klienta i serwera w moim paradygmatu?

+0

Study xmlrpclib. – mcandre

+0

"Połącz z [cokolwiek] klientami" nie działa w ten sposób, że działa TCP-IP - klient (y) nawiązują połączenie, serwer (serwery) są połączone z _to_ (możesz również mieć "peerów", którzy są serwerami _i_ klientami, choć niewiele popularnych protokołów, z wyjątkiem tych, które obsługują systemy peer-to-peer). –

+0

@Alex Martelli: To jest typ-o. Nadal mylę klientów i serwery w tym momencie. –

Odpowiedz

8

Po prostu zadzwoń connectTCP wiele razy.

Sztuką, oczywiście, jest to, że reactor.run() bloki „na wieki” (cały czas wykonywania programu), więc nie chcesz zadzwonić że wielokrotnie.

Masz kilka opcji; możesz ustawić połączenie czasowe, aby tworzyć przyszłe połączenia, lub możesz rozpocząć nowe połączenia od zdarzeń w twoim połączeniu (np. connectionLost lub clientConnectionFailed).

lub, co najprostsze, można po prostu ustawić wiele prób połączeń przed reactor.run() rozpoczyna cały koncert, na przykład:

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

Nie wiedziałem, że mogę to zrobić, wee! –

Powiązane problemy