Можно ли закрыть экземпляр долго выполняющегося процесса в Deploy на Node-RED? - PullRequest
0 голосов
/ 18 июня 2019

Я выполняю длительный процесс на узле node-red-node-daemon на Node-RED.Однако при каждом повторном развертывании проекта он создает новый экземпляр сценария, который работал (он не уничтожает уже запущенный экземпляр и создает новый при развертывании, поэтому, если я разверну свой проект 10 разОС будет запускать 10 экземпляров моего скрипта).

enter image description here

Насколько я понял из этого узла, он должен был убить скрипт, когдаNode-RED закрывается (я предполагаю, что закрытие Node-RED - это то, что делается при развертывании).Но это не работает, как я ожидал.Я что-то пропустил?Можно ли завершить длительный процесс на Node-RED во время повторного развертывания?То есть мы не создаем его новые экземпляры?


РЕДАКТИРОВАТЬ

Долгосрочный процесс, который я сказал в своем вопросе, - это скрипт bash, выполняющийinotifywait команда на машине с Linux (вы не можете использовать ее в Windows).Вот его упрощенная версия:

#!/bin/bash

WATCHEDFOLDER='/home/user/watchedfolder'
id=''
event=''
file=''

main () {
   if [ "$event" == "MOVED_TO" ]; then
      echo -n "$id""$file"
   fi
}

inotifyInterruption () {
   inotifywait --format="%w^%e^%f" -q -m -e move "$WATCHEDFOLDER" |
      while IFS='^' read idLocal eventLocal fileLocal; do
         id="$idLocal"
         event="$eventLocal"
         file="$fileLocal"
         main
      done
}   

inotifyInterruption 

Идея заключается в том, что при каждом перемещении нового файла в определенную папку сценарий выводит полный путь к файлу (и, следовательно, отправляетэто к следующему узлу как msg.payload на Node-RED).Подводя итог, можно сказать, что проблема создания новых экземпляров в этом сценарии заключается в том, что он будет работать так, как если бы 10 файлов с одинаковыми именами поступали в отслеживаемую папку после ее 10-кратного развертывания ...

...