簡體   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