Лучшие практики перезапуска дочернего процесса - PullRequest
0 голосов
/ 03 августа 2020

У меня есть главный процесс, который порождает несколько дочерних процессов для выполнения некоторой работы. Когда эти дочерние элементы d ie, я хочу, чтобы главный процесс перезапускал каждый процесс.

Есть ли что-то плохое в том, чтобы делать что-то таким образом? Это кажется немного взломанным, но, судя по тому, что я прочитал, я думаю, что это может быть нормально. Меня немного беспокоят утечки памяти при перезапуске или случаи, когда дочерний процесс не перезапускается по какой-либо причине.

const fork = require("child_process").fork;
let CHILD = {};

function runChildProcess(file, name, args = []) {
  CHILD[name] = fork(`${file}`, args);

  CHILD[name].on("close", () => {
    console.info(`${name} closed. Restarting...`);
    runChildProcess(file, name, args);
  });

  CHILD[name].on("error", err => {
    console.error(`Error with ${file}: ${err.message} ${err.stack}`);
  });
}

runChildProcess(`processOne.js`, "PROCESS_1");
runChildProcess(`processTwo.js`, "PROCESS_2");
runChildProcess(`processThree.js`, "PROCESS_3");
...