我正在尝试构建一个物联网设备,并期待着构建这样的东西:
示意图:
- 一个python进程,它作为一个循环运行,与硬件组件交互
- 一种TCP服务器(Pub-Sub(,它从客户端接收命令并传递给(1(
- (1( 可以与(2(交互以发布事件,并且(2(可以与(1(交互以控制硬件
这是我尝试过的:
- 使用twisted,我创建了一个酒吧子服务
- 尝试命令该服务发出事件
- Node.js服务器上的TCP侦听器与Twisted TCP服务器交互
这就是我观察到的:
Node.js服务器能够正确地向Twisted服务器发送消息。
调用reactor.run()
后执行其他代码(示意图:1(的扭曲块,因为它开始在端口上侦听。
我希望这两个过程同时运行并相互作用。
有没有一种方法可以在不使用多线程或多进程的情况下实现这一点?
我使用asyncio
解决了这个问题
我们可以运行两个可以异步的循环,两个循环中都有asyncio.sleep
,这样就轮到另一个循环执行了。
python-docs还有一个带有asyncio的tcp服务器示例,因此解决了我的需求