Node-red зависает при отправке fast node.send (msg) - PullRequest
0 голосов
/ 28 июня 2018

Я борюсь с проблемой в конфигурации узла для узла-красного. Я сделал узел, который имеет вход и выход. Каждый раз, когда вход получает сообщение полезной нагрузки любого типа, он выполняет чтение файла и выбрасывает это содержимое в вывод. Проблема в том, что когда я посылаю входной сигнал с интервалом 0,01 сек, редактор красного потока узла (веб-интерфейс) зависает! Я понял, что это

node.send(msg)

, что вызывает проблему, потому что если просто поставить сообщение на

console.log(msg)

Все отлично работает.

Когда красный узел зависает, единственное, что я могу сделать, чтобы он снова стал "живым", - это удалить файл потока json.

Я получаю эту ошибку:

28 Jun 08:22:43 - [red] Uncaught Exception:
28 Jun 08:22:43 - Error: EMFILE: too many open files, open

Существует ли ограничение для быстрого открытия, чтения и закрытия файлов на узле красного цвета?

вот мой исходный код .js:

   node.on('input', function(msg){


        fs.readFile(path.location,(err, data) => {
            if (err) throw err;
            if(name === 'Mains current') {
                data = {payload: data/1000*(-1), topic: msg.topic};
            }
            else {
                data = {payload: data/1000, topic: msg.topic};
            }
            node.send(data);
        })        
    })

1 Ответ

0 голосов
/ 28 июня 2018

Я решил это! Я сделал флаг занято;

 var busy = false;
 node.on('input', function(msg){


        if (busy){
            console.log('busy');
            return;
        } 
        busy = true;
            fs.readFile(path.location,(err, data) => {
                if (err) throw err;
                if(name === 'Mains current') {
                    data = {payload: data/1000*(-1), topic: msg.topic};
                }
                else {
                    data = {payload: data/1000, topic: msg.topic};
                }
                node.send(data);
                busy = false;

            })        
    })
...