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

2024-09-27 23:26:10 发布

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

我已经建立了一个树莓皮连接到一个LED带,这是从我的手机通过一个节点服务器,我在树莓皮运行控制。它触发一个设置颜色的简单python脚本。你知道吗

我期待着扩展功能,这样我有一个python脚本不断运行,我可以发送颜色给它,它将消耗新的颜色和显示旧的和新的颜色并排。即python脚本可以接收命令和管理状态。你知道吗

我已经研究过是使用简单循环还是deamon,但是我不知道如何连续运行脚本和接收新命令。你知道吗

在节点服务器中保持状态并不断地向基本的python脚本发送大量简单的命令,或者编写一个更复杂的python脚本来接收一些简单的命令并不断地更新灯光,这样更好吗?你知道吗


Tags: 命令功能服务器脚本led节点颜色状态
2条回答

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

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

对于需要实际接受消息的更复杂的请求,可以侦听Unix套接字或TCP套接字。标准库中的socket模块可以帮助您实现这一点。如果您想构建一个更复杂的命令服务器,那么您甚至可以考虑运行一个完整的HTTP服务器,尽管在当前的情况下这看起来有些过分。你知道吗

Is it better to keep state in the Node server and keep sending a lot of simple commands to a basic python script or to write a more involved python script that can receive few simpler commands and continuously update the lights?

对此没有直截了当的答案。这取决于具体情况,状态有多复杂,你需要改变颜色的频率,你对语言的熟悉程度等等

另一种选择是让Node app调用Python脚本作为子进程,并将任何需要的变量传递给它,您还可以读取Python的output,如下所示:

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

相关问题 更多 >

    热门问题