python - 如何连续运行可以从节点接收命令的 Python 脚本
问题描述
我已经设置了一个连接到 LED 灯条的 Raspberry Pi,该灯条可以通过我在 RasPi 上运行的节点服务器从我的手机控制。它触发一个设置颜色的简单 python 脚本。
我正在寻找扩展功能,以便我有一个连续运行的 python 脚本,我可以向它发送颜色,它将消耗新颜色并并排显示旧颜色和新颜色。即python脚本可以接收命令和管理状态。
我已经研究过是否为此使用简单的循环或守护程序,但我不明白如何连续运行脚本并接收新命令。
是在 Node 服务器中保持状态并继续向基本的 Python 脚本发送大量简单命令,还是编写一个更复杂的 Python 脚本来接收一些更简单的命令并不断更新灯光?
解决方案
IIUC,您不一定需要让 python 脚本连续运行。它只需要存储状态,您可以通过将状态写入文件来做到这一点。然后脚本可以在启动时读取最后一个状态文件,决定从那里做什么,执行操作,然后更新状态文件。
如果您确实想实际连续运行脚本,则需要一种接受命令的方法。守护进程接受命令的最简单方法可能是通过信号,您可以使用自定义信号,例如 SIGUSR1 和 SIGUSR2 来发送和接收这些通知。如果您的守护进程只需要接受非常简单的请求,这些可能就足够了。
对于需要实际接受消息的更复杂的请求,您可以监听 Unix 套接字或监听 TCP 套接字。标准库中的 socket 模块可以帮助你。如果您想构建一个更复杂的命令服务器,那么您甚至可能需要考虑运行一个完整的 HTTP 服务器,尽管这对于当前情况来说显得有些过分。
是在 Node 服务器中保持状态并继续向基本的 Python 脚本发送大量简单命令,还是编写一个更复杂的 Python 脚本来接收一些更简单的命令并不断更新灯光?
对此没有直接的答案。这取决于具体情况、状态的复杂程度、您需要更改颜色的频率、您对语言的熟悉程度等。
推荐阅读
- c# - IConfiguration 返回空值。无法从数据库中读取
- c# - C# Excel 组合框中的空行(导致错误“System.FormatException:输入字符串的格式不正确。”)
- python - Numpy 在 anaconda 环境中工作,但不在终端中
- azure - 身份验证如何在 Azure Functions 上工作
- python - 尝试使用 df.loc 制作一个小数据框,但出现错误
- javascript - 在反应循环中工作时无法读取未定义的属性
- java - 如何使用 OnClickListener 可见/不可见?
- azure - Azure AKS 横向扩展
- node.js - 带有 macOS 的 Nodejs:# Fatal error in , line 0 - gatsby develop
- javascript - 简单的 javascript 库,单击每个小缩略图图像时显示大图像