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

标签 python node.js amazon-ec2

我在 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 子进程未运行的情况下。

关于python - 从 nodejs 运行 python 子进程时出现错误 : read ECONNRESET ,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45578594/

相关文章:

python - H2O.apply python 函数似乎被破坏了

javascript - 如何使用 Promise 和 try catch block

javascript - Mongodb 聚合管道新日期

amazon-ec2 - 允许用户放置、获取、删除和修改权限的 S3 策略

amazon-web-services - 如何将AWS ACCESS KEY映射到IAM用户?

python - 将语音数据作为字符串记录和写入文件中以进行加密

python - 从 Azure Datafactory 管道中的 Databricks Notebook 获取异常

python - 导入seaborn产生SHIM警告

angularjs - 重新加载页面时丢失 cookie/ session

amazon-web-services - Wildfly 10 服务器启动时出错