在单独的线程上扭曲的反应器调用

时间:2012-09-11 14:49:09

标签: python multithreading twisted

我正在开发一个涉及使用twisted api通过tcp获取数据的应用程序。 我们的过程是监听器应用程序,它持续监听事件并执行以下操作。

  1. 处理事件通知和构建字典以将其发送到第三方应用程序
  2. 为了完成字典..使用twisted api调用进程来获取一些额外的数据并完成字典。
  3. 单次执行后,我无法在主线程上执行twisted api执行。执行器停止,主线程没有进一步的进展..

    我想要的是:

    1. 对于每个事件通知---假脱机线程通过tcp进行扭曲调用以获取数据。
    2. 使用newThread加入mainThread以等待其完成
    3. 获取结果,合并半建字典并将其发送给第三方应用。

    4. 假设我在主线程中听eventObj1 ---

      处理涉及步骤1步骤---步骤2 ---步骤3 ---步骤4 - 发送给方。

      假设step4涉及通过tcp获取数据,我们应该等到结果可用,然后才能完成字典并将其发送给第三方。

      因为eventObj1来了,我将它排队以通过tcp获取..同时这样做我说reactor.start() (反应堆在主线程中启动)并且在一段时间后我得到了数据和调用回调dict是为event1构建的并发送给第三方。

      但是我不能排队等待数据获取的事件,直到我reactor.stop()为止。因为直到reactor.stop()没有被调用主线程才能回到处理eventObj2 ..

      所以我认为,我需要的是在单独的线程中启动reactor ...并在主程序退出之前继续从主线程停止反应器排队事件

1 个答案:

答案 0 :(得分:1)

您不需要任何线程。你只是想让反应堆做多件事,这实际上是反应堆的重点。请参阅此问题以获得解释:Twisted reactor starting multiple times in a single program?