Как убить spawnSync после тайм-аута - PullRequest
1 голос
/ 17 июня 2019

Я хочу завершить процесс spawnSync в ES6 async / await.

  (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 секунд или более.

Однако, из-за ожидания, setTimeout будет выполнен через 10 секунд после того, как закончится все выполнение test.py.

Как сделать невозможным запуск более 2 секунд?

1 Ответ

1 голос
/ 17 июня 2019

spawnSync поддерживает поле параметра с именем timeout. Это указывает в миллисекундах, как долго разрешено запускать процесс:

await spawnSync(exefile, {
        encoding: 'utf-8',
        timeout: 2000
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...