2012-06-02 76 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