我正在开发一个涉及使用twisted api通过tcp获取数据的应用程序。 我们的过程是监听器应用程序,它持续监听事件并执行以下操作。
单次执行后,我无法在主线程上执行twisted api执行。执行器停止,主线程没有进一步的进展..
我想要的是:
假设我在主线程中听eventObj1 ---
处理涉及步骤1步骤---步骤2 ---步骤3 ---步骤4 - 发送给方。
假设step4涉及通过tcp获取数据,我们应该等到结果可用,然后才能完成字典并将其发送给第三方。
因为eventObj1来了,我将它排队以通过tcp获取..同时这样做我说reactor.start()
(反应堆在主线程中启动)并且在一段时间后我得到了数据和调用回调dict是为event1构建的并发送给第三方。
但是我不能排队等待数据获取的事件,直到我reactor.stop()
为止。因为直到reactor.stop()
没有被调用主线程才能回到处理eventObj2 ..
所以我认为,我需要的是在单独的线程中启动reactor ...并在主程序退出之前继续从主线程停止反应器排队事件
答案 0 :(得分:1)
您不需要任何线程。你只是想让反应堆做多件事,这实际上是反应堆的重点。请参阅此问题以获得解释:Twisted reactor starting multiple times in a single program?