使用nodejs扩展python进程,导致错误:生成E2BIG

问题描述

这是我生成python进程的代码

我正在尝试使用spawn

从nodejs调用python文件

对于小数据,它工作正常,但是当我进行大数据传递时,会导致错误

下面是我的代码

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)
                }



        });


    }

当我将大量json数据传递给此函数时,会导致此错误

Error: spawn E2BIG

请帮助我如何将大数据作为json传递给python

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)