运行 python 中的 TCP 和循环进程
Run a TCP and looped process in python
我正在尝试构建一个 IoT 设备并期待构建这样的东西:
原理图:
- 一个 python 进程,它 运行 作为与硬件组件交互的循环
- 一个 TCP 服务器 (Pub-Sub),它从它的客户端获取命令并传递给 (1)
- (1) 可以与 (2) 交互以发布事件,并且 (2) 可以与 (1) 交互以控制硬件
这是我尝试过的:
- 使用 twisted,我创建了一个 pub sub 服务
- 试图命令该服务发出事件
- Node.js 服务器上的 TCP 侦听器,用于与 Twisted TCP 服务器交互
这是我观察到的:
Node.js 服务器能够正确地向 Twisted 服务器发送消息。
Twisted 块在调用 reactor.run()
后开始侦听端口后执行其他代码(示意图:1)。
我想同时拥有这两个进程 运行 并相互交互。
有没有不使用多线程或多进程就可以实现的方法?
我用 asyncio
解决了这个问题
我们可以 运行 2 个可以异步的循环,在两个循环中都有 asyncio.sleep
,以便轮到其他循环执行。
python 文档也有一个带有 asyncio 的 tcp 服务器示例,所以那里解决了我的要求
我正在尝试构建一个 IoT 设备并期待构建这样的东西:
原理图:
- 一个 python 进程,它 运行 作为与硬件组件交互的循环
- 一个 TCP 服务器 (Pub-Sub),它从它的客户端获取命令并传递给 (1)
- (1) 可以与 (2) 交互以发布事件,并且 (2) 可以与 (1) 交互以控制硬件
这是我尝试过的:
- 使用 twisted,我创建了一个 pub sub 服务
- 试图命令该服务发出事件
- Node.js 服务器上的 TCP 侦听器,用于与 Twisted TCP 服务器交互
这是我观察到的:
Node.js 服务器能够正确地向 Twisted 服务器发送消息。
Twisted 块在调用 reactor.run()
后开始侦听端口后执行其他代码(示意图:1)。
我想同时拥有这两个进程 运行 并相互交互。
有没有不使用多线程或多进程就可以实现的方法?
我用 asyncio
我们可以 运行 2 个可以异步的循环,在两个循环中都有 asyncio.sleep
,以便轮到其他循环执行。
python 文档也有一个带有 asyncio 的 tcp 服务器示例,所以那里解决了我的要求