Функция NodeJS и Python-Shell .run не печатает STDOUT

1

Я использую NodeJS и скрипт Python.

Мне нужно получить результаты из моего сценария python, для этого я использую Python-Shell. См. Документацию по этой ссылке:

github.com/extrabacon/python-shell

Я могу получить отпечатки с помощью pythonShell.on и pythonShell.end.

Проблема в том, что я не могу отправить args этим методом

Затем я использую pythonShell.run !

Я могу отправить args, но он не возвращает отпечатки, пока он должен...

Можете ли вы помочь получить мои отпечатки?

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

var pythonShell = require('python-shell');

app.post('/index/generator/',urlencodedParser, function (req,res){
  var options = {   
    mode: 'JSON',
    pythonOptions: ['-u'],
    scriptPath: './generator',
    args: ['hello','bye']
  };

  pythonShell.run('generator.py', options, function (err, results) {    
    if (err) throw err;
    console.log("Message %j ",results);
  });
})

Здесь код python:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys

print(sys.argv[1]+' '+sys.argv[2])

1 ответ

1
Лучший ответ

Вы можете использовать child_process,

  1. сделать исполняемый файл python

    chmod +x generator.py

  2. порождать дочерний процесс

"""

const { spawn } = require('child_process');
const ls = spawn('./generator.py', ['hello', 'world']);

ls.stdout.on('data', (data) => {
  console.log('stdout: ${data}');
});

ls.stderr.on('data', (data) => {
  console.log('stderr: ${data}');
});

"""

затем используйте process.send для связи с родительским процессом

  • 0
    Большое спасибо за ваш ответ, он работает, поэтому я буду использовать ваш метод, если никто не может найти решение pythonShell.run.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню