I am getting the error while running python child process on EC2 Ubuntu from node js. The spawned child process is never invoked by node.js, however things are working perfectly fine on local. We initially were getting an EPIPE error, until we used 'sudo apt-get install libfontconfig' which then produced this error below:
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()
It looks like your modules are not installed correctly on the Ubuntu server. Did you install or update all the Ubuntu EC2 modules? Especially if the Python child processes are not running.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments