如何在超时后杀死 spawnSync
How to kill spawnSync after a timeout
我想在 ES6 async / await 中终止 spawnSync 进程。
(async () => {
const type = 'python';
const exefile = './test.py';
let opt = [file];
let result = await spawnSync(type, opt, {
encoding: 'utf-8'
});
if (exefile !== '') {
const exeRst = await spawnSync(exefile, {
encoding: 'utf-8'
});
setTimeout(() => {
console.log('⏰ Timeout!!');
console.log('exeResult.pid : ', exeResult.pid);
exeResult.kill();
}, 2000);
if (
result.output['1'] === '' &&
result.output['2'] === '' &&
exeRst.output['1'] !== ''
) {
console.log('exeResult:', exeRst);
console.log('result:', result.output);
}
}
})();
如果第二次spawnSync exeRst耗时较长,2秒内会停止执行
test.py 需要 10 秒或更长时间才能 运行。
但是由于await,setTimeout会在test.py全部执行结束后10秒后执行。
如何让 运行 不能超过 2 秒?
spawnSync 支持名为 timeout
的选项字段。这指定以毫秒为单位允许进程多长时间 运行:
await spawnSync(exefile, {
encoding: 'utf-8',
timeout: 2000
});
我想在 ES6 async / await 中终止 spawnSync 进程。
(async () => {
const type = 'python';
const exefile = './test.py';
let opt = [file];
let result = await spawnSync(type, opt, {
encoding: 'utf-8'
});
if (exefile !== '') {
const exeRst = await spawnSync(exefile, {
encoding: 'utf-8'
});
setTimeout(() => {
console.log('⏰ Timeout!!');
console.log('exeResult.pid : ', exeResult.pid);
exeResult.kill();
}, 2000);
if (
result.output['1'] === '' &&
result.output['2'] === '' &&
exeRst.output['1'] !== ''
) {
console.log('exeResult:', exeRst);
console.log('result:', result.output);
}
}
})();
如果第二次spawnSync exeRst耗时较长,2秒内会停止执行
test.py 需要 10 秒或更长时间才能 运行。
但是由于await,setTimeout会在test.py全部执行结束后10秒后执行。
如何让 运行 不能超过 2 秒?
spawnSync 支持名为 timeout
的选项字段。这指定以毫秒为单位允许进程多长时间 运行:
await spawnSync(exefile, {
encoding: 'utf-8',
timeout: 2000
});