错误:读取ECONNRESET,同时从nodejs运行pythonsubprocess

我在从节点js在EC2 Ubuntu上运行pythonsubprocess时出现错误。 生成的subprocess永远不会被node.js调用,但是在本地工作上完美的工作。 我们最初得到一个EPIPE错误,直到我们使用'sudo apt-get install libfontconfig',然后在下面产生这个错误:

events.js:160 throw er; // Unhandled 'error' event ^ //error Error: read ECONNRESET at exports._errnoException (util.js:1020:11) at Pipe.onread (net.js:568:26) //child process urlCrawlJob(hostname, pageCounter+1, accessToken); //recursive calling of the function var process = SPAWN('python', [PATH.join(__dirname,"../pyScripts/crawler.py")]), data = body.customers; dataString = ''; console.log(`Spawned child pid: ${process.pid}`); process.stdout.on('error', function (err) { console.log('stdout error: ', err); console.log(err.code); }); process.stdout.on('data', function(data){ dataString+=data console.log(dataString); }); process.stdout.on('end', function(){ console.log("ending child process -----> call url"); }); process.stdin.write(JSON.stringify({"data":data,"hostname":hostname})); process.stdin.end(); //python script ## process_init.py #crete seperate function, impletment oop concepet import sys, json, pymongo, os #defaukt address, email, phnNo, total spe print "==> in crawler python" #print sys.args[0]; def main(): data = json.load(sys.stdin) hostname = data['hostname']; customerData = data['data']; print hostname collection = dbConnection(hostname) #isFile = open("/crawlerResult/"+hostname+".txt","w+") pwd = os.getcwd() print pwd file = open(pwd+"/crawlerResult/"+hostname+".txt", "a++") iteratingData(customerData, file, collection) print "=====\n\n" client.close(); #close the db connection sys.stdout.flush(); def dbConnection(hostname): #opening connection with db client = pymongo.MongoClient('127.0.0.1', 27017) ; # TODO: if connection already open do not open neew one # print client db = client["customerLTV"]; print db collection = db[hostname]; return collection def iteratingData(customerData, file, collection): count = 0 data = {} for i in customerData: #print i count += 1 #print len(i["addresses"]); try: strdata = {} strdata[count] = data strdata = json.dumps(strdata) file.write(strdata + "\n") data.pop('_id', None) collection.insert(data) data = {} except Exception, e: print str(e) print count; #start process if __name__ == '__main__': main() 

它看起来像你的模块没有正确安装在Ubuntu服务器上。 你有没有安装或更新所有的Ubuntu EC2模块? 特别是如果Pythonsubprocess没有运行。