在多个端口上运行Reactor.run

Ale*_*lec 1 python twisted

我有以下代码.我试图让反应堆在1025 + NUM_TABLES开始的端口上运行.问题是当我在循环中调用reactor.run()时,循环冻结.当它被注释时,循环从0到9计数,但是当它被取消注释时,它只打印0.

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()
Run Code Online (Sandbox Code Playgroud)

能够在不同的端口上运行新工厂需要什么?为什么反应堆停在0?它以前工作过,为什么不呢?谢谢.

the*_*aul 5

reactor.run()在创建和注册所有侦听器之前不要调用.这是你从主脚本直接打的最后一次电话; 之后的一切都是回调.

为了澄清,只需将最后一行缩进一级.