我使用node子进程执行python进程得到一个url。问题是我正在多次运行该进程,即使只是一次访问该网址。
以下是代码:
server.get('/', function(req, res, next) {
console.log('spawning process');
var child = exec('python reporter.py', function(error, stdout, stderr) {
if (error || stderr) return console.log(error, stderr);
var data = JSON.parse(stdout);
console.log('Process ready');
});
});
答案 0 :(得分:2)
有可能无论您使用什么来发送GET响应,都会在没有得到响应时重试该请求。所以做出回应:
e.g。
server.get('/', function(req, res, next) {
console.log('spawning process');
var child = exec('python reporter.py', function(error, stdout, stderr) {
if (error || stderr) return console.log(error, stderr);
var data = JSON.parse(stdout);
console.log('Process ready');
res.status(200).send()
});
});
答案 1 :(得分:0)
对于在最新版本的节点中面临相同问题的任何人:
const { spawn } = require('child_process');
const ls = spawn('ls', ['-lh', '/usr']);
ls.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
按照 nodejs.org
//在“数据”中捕获数据,然后尝试将响应置于“关闭”位置。 完成所有数据处理后,将执行关闭。