Я использую exec
из child_process
.
Функция работает нормально, но через 4-5 минут она просто останавливается, без сообщений об ошибках, но скрипт должен работать не менее 24 часов...
Вот код:
import { exec } from 'child_process';
function searchDirectory(dirPath) {
let lineBuffer = '';
const cmd = `find ${dirPath} -type f -name "*.txt" | pv -l -L 10 -q`;
const findData = exec(cmd);
findData.on('error', err => log.error(err));
findData.stdout.on('data', data => {
lineBuffer += data;
let lines = lineBuffer.split('\n');
for (var i = 0; i < lines.length - 1; i++) {
let filepath = lines[i];
processfile(filepath);
}
lineBuffer = lines[lines.length - 1];
});
findData.stdout.on('end', () => console.log('finished finding...'));
}
Команда pv
замедляет вывод, мне это нужно, поскольку путь, по которому я нахожу, идет по сети и довольно медленный(60 Мбит / с).
Когда я запускаю команду непосредственно в терминале, она работает нормально (я не ждал 24 часа, но я позволил ей полчаса, и она все еще работала).
Функция processfile фактически выполняет асинхронный вызов с axios
для отправки некоторых данных на сервер:
let data = readFileSync(file);
...
axios.post(API_URL, { obj: data }, { proxy: false })
.then(res => {
log.info('Successfully saved object : ' + res.data._id);
})
.catch(err => {
log.error(err.response ? err.response.data : err);
});
Что может привести к остановке сценария?Есть идеи?
Спасибо