stdout: получение вывода другого процесса - PullRequest
0 голосов
/ 11 октября 2018

Я столкнулся с проблемой при использовании spawn в nodejs.Когда этот сценарий выполняется параллельно, стандартный вывод будет выполняться для всех процессов после завершения одного процесса.Поэтому все остальные процессы получают выходные данные другого процесса вместо своих собственных.

Как я могу предотвратить это?Вот код, который я использую:

   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);
   });
...