繁体   English   中英

如何连续运行可以从节点接收命令的Python脚本

[英]How to run a Python script continuously that can receive commands from node

我已经建立了一个连接到LED灯条的Raspberry Pi,可以通过我在RasPi上运行的Node服务器从手机控制它。 它会触发一个简单的设置颜色的python脚本。

我正在扩展功能,以使我不断运行python脚本,并且可以向其发送颜色,以使用新颜色并同时显示新旧颜色。 即python脚本可以接收命令并管理状态。

我已经研究了是否为此使用简单循环或守护进程,但是我不知道如何连续运行脚本并接收新命令。

保持节点服务器中的状态并继续向基本python脚本发送许多简单命令,还是编写一个涉及更多的python脚本(可以接收一些简单命令并不断更新指示灯)的方法更好?

IIUC,您不一定需要连续运行python脚本。 它只需要存储状态,您可以通过将状态写入文件来做到这一点。 然后,脚本可以在启动时仅读取最后一个状态文件,从中决定要做什么,执行操作,然后更新状态文件。

如果您确实希望连续不断地运行脚本,则需要一种接受命令的方法。 守护程序接受命令的最简单方法可能是通过信号,您可以使用自定义信号(例如SIGUSR1和SIGUSR2)发送和接收这些通知。 如果您的守护程序只需要接受非常简单的请求,这些就足够了。

对于需要实际接受消息的更复杂的请求,可以侦听Unix套接字或TCP套接字。 标准库中的套接字模块可以帮助您。 如果要构建更复杂的命令服务器,则甚至可能要考虑运行完整的HTTP服务器,尽管这对于当前情况来说显得有些过头了。

保持节点服务器中的状态并继续向基本python脚本发送许多简单命令,还是编写一个涉及更多的python脚本(可以接收一些简单命令并不断更新指示灯)的方法更好?

没有直接的答案。 这取决于具体情况,状态的复杂程度,更改颜色的频率,对语言的熟悉程度等。

另一个选择是使用Node应用程序,将Python脚本作为子进程调用,并将所需的var传递给它,您也可以读取python的输出,如下所示:

 var exec = require('child_process').exec;
 var child = exec('python file.py var1 var2', function (error, stdout, stderr) {
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM