Python NodeJS中的子进程在';应该是的

Python NodeJS中的子进程在';应该是的,python,node.js,child-process,Python,Node.js,Child Process,我使用nodeJS和express作为服务器,并使用child_process.spawn运行python脚本。 运行脚本后,我得到结果并将其作为json响应发送 当我得到正确的post响应时,服务器响应正确的响应。 当我发布错误的参数时,服务器会响应错误消息(如预期的那样) 但是当我在正确的参数帖子之后发布错误的参数时,它给出了前一篇帖子的响应,我不知道为什么。也许这是因为繁殖,我应该使用exec吗 我想知道为什么会这样。 如果你需要更多的细节,请告诉我 const{json}=require

我使用nodeJS和express作为服务器,并使用child_process.spawn运行python脚本。 运行脚本后,我得到结果并将其作为json响应发送

当我得到正确的post响应时,服务器响应正确的响应。 当我发布错误的参数时,服务器会响应错误消息(如预期的那样)

但是当我在正确的参数帖子之后发布错误的参数时,它给出了前一篇帖子的响应,我不知道为什么。也许这是因为繁殖,我应该使用exec吗

我想知道为什么会这样。 如果你需要更多的细节,请告诉我

const{json}=require('body-parser')
const express=require('express')
const{setTimeout}=require('timers'))
const router=express.router()
让数据停止;
路由器.post(“/”,(请求,res)=>{
//控制台日志(请求正文)
让resol=要求的主体分辨率;
设url1=req.body.FirstImageURI;
设url2=req.body.SecondImageURI;
让roi=req.body.DetectionArea;
设sens=req.body.Threshold;
if(isNaN(sens))sens=“50”;
log(“启动ai模型”);
log(`params:${url1}${url2}${roi}${sens}`);
const spawn=require(“子进程”)。spawn;
constpythonprocess=spawn('python',[“img_diff.py”,url1,url2,roi,sens]);
pythonProcess.stdout.on('data',函数(data){
log('python脚本中的管道数据…');
dataToSend=data.toString();
log(`data in stdout:${dataToSend}`)
});
//在close事件中,我们确信来自子进程的流是关闭的
pythonProcess.on('close',(代码)=>{
试一试{
jsonObject={}
log(`child process close all stdio with code${code}`);
//格式json
dtList=dataToSend.split('\n');
ssim=编号(dtList[0]。拆分(“:”[1]);
检测到=“未检测到”
console.log(dtList[1])
设addInfo=dtList[1].trim().slice(1,-1)
addInfo=JSON.parse(“[”+addInfo+“]”);
jsonObject.AdditionalInfo=[]
for(设i=0;i0){
检测到=“检测到”
}
jsonObject.Result=检测到
console.log(检测到)
res.json(jsonObject)
}捕获(e){
console.log(`error->${e}`)
jsonObject.AdditionalInfo=[];
让thisObject={};
thisObject.DetectedRegion=[];
jsonObject.AdditionalInfo.push(thisObject);
jsonObject.detected=“未检测到”;
res.json(jsonObject);
} 
});
})
module.exports=路由器

仍然不知道为什么会发生这种情况, 但我的猜测是,随着进程崩溃, 节点仅给出来自上一个成功内存的响应


如果我有更好的答案,我会回来更新。

这里的人只有在你展示相关代码的情况下才有机会帮助你。我们猜不出你的代码做错了什么。我们需要看到实际的代码。