Лучшая практика в node-red, чтобы иметь бесконечный поток?

Я хочу запустить бесконечный поток в узле-красном, но не хочу соединять конец с началом или, по крайней мере, хочу знать, есть ли лучший способ сделать это? Как например узел, который сообщает узлу красный начать все сначала или что-то в этом роде?

Поток может выглядеть как пустая инъекция, которая запускается один раз, а затем имеет какой-то узел, который ожидает выполнения условия, если это условие происходит, поток что-то делает и завершается. Но когда он закончится, он должен снова начать ждать состояния.

Надеюсь, я объяснил это понятно :).

Спасибо!


person Thilo Cestonaro    schedule 12.05.2015    source источник
comment
Привет, Тило, чтобы правильно ответить, было бы полезно, если бы вы могли определить, какое «условие» запускает ваш поток. Это не похоже на поток, находящийся в цикле, скорее на поток, который ожидает событие, которое он затем обрабатывает. Зачем нужно, чтобы он был в шлейфе?   -  person knolleary    schedule 12.05.2015
comment
думаю, мой поток считывает некоторые данные конфигурации из базы данных sqlite, и в этих данных конфигурации есть набор имени файла, который следует дождаться изменения. Если этот файл изменился, нужно что-то записать обратно в БД sqlite. После того, как база данных была записана, поток должен начаться заново. Имя файла, за которым нужно следить, можно изменить, поэтому мне нужно прочитать его из БД, прежде чем ждать изменения.   -  person Thilo Cestonaro    schedule 13.05.2015
comment
Вместо того, чтобы кружить вечно (что означает занятое ожидание), вероятно, гораздо лучше использовать узел таймера, чтобы запускать поток через равные промежутки времени. См. Этот мой вопрос stackoverflow.com/questions/44109445/, чтобы найти узел, который может запускать ваш поток чаще, чем один раз в секунду.   -  person Erich Kitzmueller    schedule 23.07.2017


Ответы (1)


Вы имеете в виду, что хотите, чтобы одно и то же сообщение продолжало циркулировать в потоке вечно?

Если содержимое сообщения может быть инкапсулировано в полезную часть объекта msg, тогда у вас может быть узел ввода MQTT в начале и узел публикации в конце, так что объект публикуется, а затем повторно вводится в начале. Вы, вероятно, захотите убедиться, что где-то в потоке есть подходящий узел задержки.

Вы можете начать это с узла ввода, который публикует сообщение в той же теме, когда запускается поток.

Другой вариант - сохранить все состояние в глобальном контексте с помощью функционального блока и просто иметь в начале узел инъекции, который срабатывает с любым интервалом, который вы хотите, чтобы потоки обтекали поток.

Оба они довольно хакерские, и я думаю, вам нужно четко понимать, почему вам нужен «бесконечный поток».

person hardillb    schedule 12.05.2015