我正在使用python twisted并且我有两个独立的服务器正在工作,一个接收TCP,一个接收UDP并且每个都使用
reactor.listenTCP(PORT, factory)
reactor.run()
和
reactor.listenUDP(PORT, BaseThreadedUDPServer())
reactor.run()
它们都有效但现在我想将它们组合成一个接收TCP和UDP的服务器,但它们都使用变量reactor
。不是reactor
扭曲的,不是我自己的。如果它是我自己的,我可以更改每个的名称。
谢谢!
答案 0 :(得分:5)
这只是对MarkR答案的改写,这是正确的,但我认为说清楚其工作原理可能会更清楚一些:
您的程序应该如下所示,而不是您的建议:
reactor.listenTCP(PORT, factory)
reactor.listenUDP(PORT, BaseThreadedUDPServer())
reactor.run()
将reactor.run()
视为“运行整个程序,然后退出,我已完成”是有帮助的。每个程序只应运行一次reactor。但是,在运行它之前,当它运行时,您可以调用任意数量的方法来监听新协议或调用新的定时事件。
答案 1 :(得分:4)
您可以在reactor.run()
之前,在启动时多次调用listenTCP和listenUDP然后,您的回调将在适当的时间调用适当的协议,您可以相应地处理它们。