Skip to main content
 首页 » 编程设计

python之从 nodejs 运行 python 子进程时出现错误 : read ECONNRESET ,

2025年02月15日38wayfarer

我在 EC2 Ubuntu 上从 Node js 运行 python 子进程时遇到错误。 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 模块?尤其是在 Python 子进程未运行的情况下。