Как непрерывно запускать скрипт Python, который может получать команды от узла - PullRequest
0 голосов
/ 08 июня 2019

Я настроил Raspberry Pi, подключенный к светодиодной ленте, которой можно управлять с моего телефона через Node-сервер, который я использую на RasPi.Он запускает простой сценарий Python, который устанавливает цвет.

Я хочу расширить функциональность так, чтобы у меня был постоянно запущенный сценарий Python, и я могу отправлять ему цвета, чтобы он использовал новый цвет и отображали старый и новый цвет соседствуют.Т.е. скрипт python может принимать команды и управлять состоянием.

Я изучил, использовать ли для этого простой цикл или демон, но я не понимаю, как запустить скрипт непрерывно и получить новыйкоманды.

Лучше ли сохранять состояние на сервере Node и продолжать посылать множество простых команд базовому скрипту Python или писать более сложный скрипт Python, который может принимать несколько более простых команд и постоянно обновлять свет

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Другой вариант - это иметь приложение Node, вызывать скрипт Python как дочерний процесс и передавать ему все необходимые переменные, и вы также можете читать исходники Python, например, так:

 var exec = require('child_process').exec;
 var child = exec('python file.py var1 var2', function (error, stdout, stderr) {
 }
1 голос
/ 08 июня 2019

IIUC, вам не обязательно постоянно запускать скрипт python.Ему просто нужно сохранить состояние, и вы можете сделать это, записав состояние в файл.Затем сценарий может просто прочитать последний файл состояния при запуске, решить, что с ним делать, выполнить действие, а затем обновить файл состояния.

Если вы действительно хотите непрерывно запускать сценарий, вам нужноспособ принять команды.Самый простой способ для демона принять команду, вероятно, через сигнал, вы можете использовать пользовательский сигнал, например, SIGUSR1 и SIGUSR2, чтобы отправлять и получать эти уведомления.Этого может быть достаточно, если вашему демону нужно только принять очень простой запрос.

Для более сложного запроса, когда вам нужно фактически принимать сообщения, вы можете прослушивать сокет Unix или прослушивать сокет TCP.Модуль сокетов в стандартной библиотеке может помочь вам в этом.Если вы хотите построить более сложный командный сервер, то вы можете даже рассмотреть возможность использования полного HTTP-сервера, хотя это выглядит излишним для текущей ситуации.

Лучше ли сохранять состояние вУзловый сервер и продолжать посылать множество простых команд базовому сценарию Python или писать более сложный сценарий Python, который может принимать несколько простых команд и постоянно обновлять свет?

Нет однозначного ответа на этот вопрос,Это зависит от каждого конкретного случая, насколько сложно состояние, как часто вам нужно менять цвет, насколько вы знакомы с языками и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...