2010-07-06 52 views
7

我試圖使用twisted來創建一個計算機集羣,它在一個較大的數據集上運行一個程序。twisted:一個客戶端,很多服務器

我的「服務器」從客戶端收到一大塊數據並在其上運行命令x。

我的「客戶端」連接到多個服務器,給他們每個數據塊並告訴他們運行命令x的參數。

我的問題是:有沒有辦法來建立反應器迴路連接到多臺服務器:

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

或者我有交換客戶端和服務器在我的範例?

+0

研究的xmlrpclib:

或者說,最簡單的,你可以前reactor.run()揭開序幕整場演出,這樣設置多個連接嘗試。 – mcandre 2010-07-06 18:48:47

+0

「連接到[任何]客戶端」不是TCP-IP的工作方式 - 客戶端進行連接,服務器連接到_to_(也可以有「同級」,它們都是服務器和客戶端,儘管除了點對點的協議以外,很少有流行的協議)。 – 2010-07-06 18:49:27

+0

@Alex Martelli:這是一個類型o。目前,我仍然困惑客戶和服務器。 – 2010-07-06 19:01:11

回答

8

只需撥打connectTCP多次。

當然,訣竅是reactor.run()會「永久」(程序的整個運行時間),因此您不想多次呼叫

你有幾個選擇;您可以設置定時呼叫以進行未來連接,也可以從連接上的事件(如connectionLostclientConnectionFailed)開始新的連接。

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

我不知道我能做到這一點,凌晨! – 2010-07-06 19:02:52