stdout:接收另一个进程的输出

时间:2018-10-11 01:43:19

标签: python node.js stdout spawn

在nodejs中使用spawn时遇到了挑战。当此脚本并行执行时,一旦一个进程完成,stdout将对所有进程执行。因此,所有其他进程正在接收另一个进程的输出,而不是它们自己的输出。

如何防止这种情况?这是我使用的代码:

   const pyProg = await spawn('python3', [process.env.PWD + '/server/vrp_solver/tsp_solver.py', '/../../route_data/'+depot.city+'/'+moment(route.date_driven).format('Y-MM-DD'), 'morning']);

   winston.info('Solving the TSP for %s...', route.name);
   pyProg.stdout.on('data', function(data) {

     let result_string = data.toString();
     winston.info('Route result: %s', result_string);

     let result_array = eval(result_string); // eval() converts a string to an array
     let entity = {
       result: result_array,
       distances: distances,
       durations: durations,
       coordinates: coordinates,
     };

     process_route(entity,route);
   });

   pyProg.stderr.on('data', (data) => {
     winston.error('Received an error from the VRP solver: %s', data);
   });

0 个答案:

没有答案