У меня есть длительный процесс Node, который полностью использует один поток, поэтому я перенес некоторые задачи setInterval
в дочерний процесс узла.
Мой дочерний процесс также выполняется долго и обрабатывает такие вещи, как обновления базы данных. и проверка данных.
Я все еще нахожусь в процессе реализации надлежащей обработки ошибок в дочернем процессе, и поэтому я закрываю процесс на ошибках NetworkErrors или в базе данных и ошибках журналирования при сборке.
Это плохая практика - рекурсивно воссоздавать дочерний процесс из обработчика событий close
?
const cp = require('child_process');
const setupErrorProcess = () => {
let errorCheck = cp.fork('./childProcess/errorCheck.js', { stdio: 'pipe' });
errorCheck.on('close', (data) => {
setTimeout(() => {setupErrorProcess()}, 1000) //close event is emitted once
});
errorCheck.on('message', (msg) => {
console.log('Message from errorCheck', msg);
//handle message here
});
}
setupErrorProcess();