运行 python 中的 TCP 和循环进程

Run a TCP and looped process in python

我正在尝试构建一个 IoT 设备并期待构建这样的东西:

原理图:

  1. 一个 python 进程,它 运行 作为与硬件组件交互的循环
  2. 一个 TCP 服务器 (Pub-Sub),它从它的客户端获取命令并传递给 (1)
  3. (1) 可以与 (2) 交互以发布事件,并且 (2) 可以与 (1) 交互以控制硬件

这是我尝试过的:

  1. 使用 twisted,我创建了一个 pub sub 服务
  2. 试图命令该服务发出事件
  3. Node.js 服务器上的 TCP 侦听器,用于与 Twisted TCP 服务器交互

这是我观察到的:

Node.js 服务器能够正确地向 Twisted 服务器发送消息。

Twisted 块在调用 reactor.run() 后开始侦听端口后执行其他代码(示意图:1)。

我想同时拥有这两个进程 运行 并相互交互。

有没有不使用多线程或多进程就可以实现的方法?

我用 asyncio

解决了这个问题

我们可以 运行 2 个可以异步的循环,在两个循环中都有 asyncio.sleep,以便轮到其他循环执行。

python 文档也有一个带有 asyncio 的 tcp 服务器示例,所以那里解决了我的要求