Мой код:
export async function getDataExel(file: Buffer): Promise<any[]> {
const workbook = xlsx.read(file, { type: 'buffer' });
const sheetName = workbook.SheetNames[0];
const sheet = workbook.Sheets[sheetName];
return xlsx.utils.sheet_to_json(sheet, { header: 1 }).slice(3, -1);
}
export async function downloadAndProcessExcel(url: string) {
try {
let response = await axios.get(url, {
responseType: 'arraybuffer'
});
return await getDataExel(response.data);
} catch (error) {
console.error('Ошибка при загрузке и обработке файла:', error);
return [];
}
}
export async function main() {
console.log("Start");
await ArticleService.deleteAll('juna');
const settings = await SettingsService.getData();
const links = await fetchLinks();
for (const link of links) {
console.log(link);
try {
const result = await downloadAndProcessExcel('https://price.juna-life.ru' + link);
// await processAndSaveData(result, settings);
} catch (e) {
console.error(`Ошибка при обработке ссылки ${link}:`, e);
}
}
console.log("Finish");
}
// Start Script
import { main } from "./parserJuna";
// Функция для получения текущего использования памяти
function logMemoryUsage() {
const used = process.memoryUsage();
const rss = (used.rss / 1024 / 1024).toFixed(2);
console.log(`RSS: ${rss} MB`);
}
// Основная функция
async function start() {
console.log("Start");
const interval = setInterval(() => {
logMemoryUsage();
}, 5000); // Логирование каждые 5 секунд
const executeTask = async () => {
await main();
};
await executeTask();
setInterval(executeTask, 172_800_000);
console.log("End of the process");
}
start();
Я хочу, чтобы этот скрипт каждые 48 часов собирал данные, но возникает ситуация, что при сборе данных в оперативную память накачиваются данные, и не очищаются. Например, в первый раз накопилось 3ГБ данных, в следующий раз ещё 3, итого 6, и так далее. Как это исправить?