2012-06-02 103 views
1

我有以下代碼。我試圖讓反應堆在1025 + NUM_TABLES的端口上運行。問題是,當我在循環中調用reactor.run()時,循環凍結。當它被註釋掉,循環從0數到9,但是當它被註釋掉,只打印0在多個端口上運行Reactor.run

NUM_TABLES = 10 

factories = [ ] 
for i in range(0, NUM_TABLES): 
    print i 
    factory = Factory() 
    factory.protocol = Socket 
    factory.clients = [] 
    factories.append(factory) 
    reactor.listenTCP(1025+i, factory) 
    #print "Blackjack server started" 
    reactor.run() 

需要做些什麼才能夠在不同的端口上運行一個新的工廠?爲什麼反應堆停在0?它以前工作過,爲什麼不現在呢?謝謝。

+0

可能重複的[Reactor.run凍結循環](http://stackoverflow.com/questions/10866067/reactor-run-freezes-loop) –

+0

爲什麼你發佈2個相同的問題? –

+0

這是在我得到答案之前,被告知以不同的原因在不同的標題下發布。我從另一個線索得到了我的答案,並且來自該線索的保羅說完全一樣的東西。 – Alec

回答

4

在創建並註冊所有聽衆之前,請勿撥打reactor.run()。它的意思是你直接從你的主腳本中直接打的最後一個電話;之後的一切都是回調。

爲了澄清,只需將最後一行取消縮進一級。

+0

所以我只是做了它,循環從0到9,我連接到端口1025,它的工作。連接到1031,它的工作。但是現在我的問題是......只有一個工廠運行在反應堆中,在多個端口上偵聽,或者反應堆在不同的端口上運行不同的工廠? – Alec

+0

您每次通過循環創建新的Factory對象。 –

+0

在不同的端口上?所以1025港口有一個新工廠,1025有一個新工廠等等?他們不是隻在不同的端口上聽同一個工廠嗎? – Alec