отправка последовательных данных из скрипта python в сценарий узла

У меня есть два сценария: один скрипт python и еще один скрипт узла. Скрипт python работает в цикле infinte и считывает последовательные данные. После получения последовательных данных он должен передать его на node.js scipt, чтобы он мог обрабатываться на узловом сервере.

Я думал об использовании модуля node.js child_process для чтения данных из сценария python, но поскольку сценарий python представляет собой бесконечный цикл, он не возвращает никаких данных в сценарий узла. Может кто-нибудь, пожалуйста, дайте мне знать, как решить эту проблему?

Сценарий Python:

import serial ser = serial.Serial('COM10', 9600, timeout =1) while 1 : print ser.readline()' 

Node.js Сценарий:

 var spawn = require('child_process').spawn, ls = spawn('python',['pyserial.py']); ls.stdout.on('data', function (data) { console.log('stdout: ' + data); }); ls.stderr.on('data', function (data) { console.log('stderr: ' + data); }); 

Примечание. Моя единственная причина для перехода с скриптом python – модуль node.js serialport не работает в настоящее время для моего проекта из-за некоторой проблемы в модуле serialport.

После печати необходимо очистить стандартный stream вывода в скрипте python. Вот пример, который печатает время (у меня нет серийного устройства для тестирования):

Python:

 import sys from datetime import datetime from time import sleep while 1: print datetime.now() sys.stdout.flush() sleep(5) 

Node.js:

 var spawn = require('child_process').spawn, ls = spawn('python',['test.py']); ls.stdout.on('data', function (data) { console.log('stdout: ' + data); }); ls.stderr.on('data', function (data) { console.log('stderr: ' + data); }); 

Используйте ключ командной строки -u python. Он скажет python использовать небуферизованные streamи.

 var spawn = require('child_process').spawn, ls = spawn('python',['-u', 'pyserial.py']); ls.stdout.on('data', function (data) { console.log('stdout: ' + data); }); ls.stderr.on('data', function (data) { console.log('stderr: ' + data); });