我正在开发一个应用程序,该应用程序涉及使用 twisted api 通过 tcp 获取数据。我们的进程是侦听器应用程序,它不断侦听事件并执行以下操作..
- 处理事件通知并构建字典以将其发送到第三方应用程序
- 为了完成字典..它使用twisted api调用一个进程来获取一些额外的数据并完成字典。
单次执行后,我无法在主线程上执行扭曲的 api 执行..反应器停止并且主线程没有进一步的进展..
我想要的是:
- 对于每个事件通知 --- 假脱机一个新线程以通过 tcp 进行扭曲调用以获取数据。
- 将 mainThread 与 newThread 连接以等待其完成
- 获取结果,与一半构建的字典合并并将其发送到第三方应用程序。
假设我在主线程中听 eventObj1 ---
处理包括步骤 1---step2---step3---step4--send to party。
假设第 4 步涉及通过 tcp 获取数据,我们应该等到结果可用,然后才能完成字典并将其发送给第三方。
因此,当 eventObj1 出现时,我将其排队以通过 tcp 获取。这样做时我说reactor.start()
(反应器在主线程中启动),一段时间后我得到数据并调用回调 dict 为 event1 构建并发送给第三方。
但是我不能再排队等待数据获取,直到我这样做reactor.stop()
..因为直到reactor.stop()
没有被调用主线程不能回去处理eventObj2 ..
所以我认为,我需要的是在单独的线程中启动反应器..并在主程序退出之前继续从主线程停止反应器中排队事件