问题描述
我正在尝试使用spawn
对于小数据,它工作正常,但是当我进行大数据传递时,会导致错误
下面是我的代码
pythonServiceLoadPrjStaging: function (pyFile,recievedData) {
//var serviceStart = moment().format('YYYY-MM-DDTHH:mm:ss.SSS');
return new Promise(async function (resolve,reject) {
var serviceStart = moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS');
var serviceEnd = ''
var dataToSend = "";
var errCode = 3;
var varDataSize = recievedData.length
console.log(varDataSize)
var bRecievedData = Buffer.from(recievedData).toString('base64')
var jStringy = JSON.stringify(bRecievedData);
try {
//const python = spawn(process.env.pythonPath,[__dirname+'/db/' + pyFile,JSON.stringify(recievedData)]);
const python = spawn(process.env.pythonPath,[process.cwd() + '/botAppService/db/' + pyFile,jStringy]);
// collect data from script
appLogger.logMessage("debug",pyFile + "process spawned Pid = " + python.pid);
python.stdout.on('data',function (data) {
dataToSend = dataToSend + data.toString();
appLogger.logMessage("debug",pyFile + "process ondata Pid = " + python.pid);
});
python.stderr.on('data',(data) => {
appLogger.logMessage("debug",pyFile + "process ondata Pid = " + python.pid);
dataToSend = dataToSend + data;
});
python.on('close',(code) => {
appLogger.logMessage("debug",pyFile + "process closed Pid = " + python.pid + " onclose code = " + code);
});
python.on('exit',(code) => {
console.log(moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'))
console.log(dataToSend);
if (code == 0) {
var pResp = {};
try {
pResp = JSON.parse(dataToSend)
pResp.action = "db_services";
//serviceEnd = moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS');
var requestDurationInMsec = moment(serviceEnd).diff(moment(serviceStart),'ms');
resolve(pResp.data);
}
catch (e) {
console.log(e)
}
}
else {
var pErrResp = {};
try {
pErrResp.data = { status: "E",message: dataToSend.toString(),errorCode: errCode };
resolve(pErrResp.data);
}
catch (e) {
console.log(e)
}
}
});
}
catch (e) {
console.log(e)
}
});
}
Error: spawn E2BIG
请帮助我如何将大数据作为json传递给python
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)