组合循环开始()、循环停止()和循环永远();启动单独的应用程序

2024-06-02 03:06:17 发布

您现在位置:Python中文网/ 问答频道 /正文

使用client.loop_start(),做一些事情,然后client.loop_stop(),最后client.loop_forever()正确吗

上下文:我的Raspberry设备上有一个bootloader.py。引导加载程序将在设备引导时自动启动。引导加载程序连接到应用服务器(通过专用IP和主题),检查设备上安装的预期软件,下载本地不可用的较新软件,启动所需应用程序,然后引导加载程序应成为从外部侦听“服务消息”的订户。(例如:“向我发送您的状态”,“检查新软件,如果有新软件,请下载并重新启动设备”

当前实现:我已经实现了加载过程并启动了想要的应用程序。该实现使用client.loop_start()(即使用separathethread处理通信)。下载想要的文件后,引导加载程序调用subprocess.Popen(cmd),并成为已启动应用程序的进程

我想要的:现在我想分离启动的应用程序的进程。引导加载程序应该成为一个永远监听的客户端。我的想法是client.loops_stop()在与应用程序服务器的通信完成后,启动应用程序,然后client.loop_forever()作为脚本的最后一个动作,让它永远听下去。这种方法正确吗

所描述的情况是否正常?这是一种众所周知的模式吗?如果是,你能告诉我相关的文档吗?如果不是,你能看到这种方法中的任何缺陷吗


Tags: 方法py程序clientloop应用程序软件进程
1条回答
网友
1楼 · 发布于 2024-06-02 03:06:17

这不是我在其他地方见过的一种模式,但如果它符合你的需要

唯一的问题是,如果调用loop_stop()loop_forever()之间的时间长于保持活动期,这将导致代理断开客户端的连接

当您重新启动事件循环时,也可能会收到突发消息

相关问题 更多 >