Python 独立线程上的扭曲反应器调用

Python 独立线程上的扭曲反应器调用,python,multithreading,twisted,Python,Multithreading,Twisted,我正在开发一个应用程序,它涉及使用TwistedAPI通过tcp获取数据。 我们的过程是侦听器应用程序,它不断侦听事件并执行以下操作 处理事件通知并生成字典以将其发送给第三方应用程序 为了完成字典,它使用TwistedAPI调用一个进程来获取一些额外的数据并完成字典 我不能在主线程上执行twisted api,否则在单次执行之后..反应堆停止,主线程没有进一步的进展 我想要的是: 对于每个事件通知——假脱机一个新线程,通过tcp进行扭曲调用以获取数据 将主线程与newThread连接以等待其完成

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

  • 处理事件通知并生成字典以将其发送给第三方应用程序
  • 为了完成字典,它使用TwistedAPI调用一个进程来获取一些额外的数据并完成字典
  • 我不能在主线程上执行twisted api,否则在单次执行之后..反应堆停止,主线程没有进一步的进展

    我想要的是:

  • 对于每个事件通知——假脱机一个新线程,通过tcp进行扭曲调用以获取数据
  • 将主线程与newThread连接以等待其完成
  • 获取结果,与半成品字典合并,并将其发送到第三方应用程序

  • 假设我在主线程中收听eventObj1--

    处理包括前步骤1---步骤2---步骤3---步骤4---send to party的步骤

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

    因此,当eventObj1出现时,我会将其排队以便通过tcp获取。。在这样做的时候,我说
    reactor.start()
    (reactor在主线程中启动),过了一段时间,我得到数据并调用回调,dict为event1构建并发送给第三方

    但是,在我执行
    reactor.stop()
    之前,我无法将更多事件排队以获取数据。因为直到
    reactor.stop()
    未被调用,主线程无法返回到处理eventObj2


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

    您不需要任何线程。你只想让反应堆做很多事情,这就是拥有一个反应堆的意义所在。请参阅此问题以获得解释:

    不清楚您的案例中为什么需要线程。哪一个部件强制使用螺纹?上面提到的所有事情在使用TwistedAPI和延迟的主线程中听起来都是完全可行的。你不想使用线程。你的程序只是有一个bug。反应堆不会自行停止。请附上您遇到的问题的详细信息。