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