Есть функция переборки базы данных, которая выполняется раз в сутки в 23:45:
async deleteOldCoupons() {
try {
const db = require('../_helpers/db.js')
const endedCoupons = []
const dateNow = new Date()
const coupons = await db.Post.findAll()
coupons.forEach(i => {
const date = new Date(i.endDate)
if (date < dateNow) {
endedCoupons.push(i)
}
})
for (const coupon of endedCoupons) {
const addCoupon = new db.PostOld({
uin: coupon.uin,
title: coupon.title,
description: coupon.description,
type: coupon.type,
shopUin: coupon.shopUin,
endDate: coupon.endDate,
url: coupon.url,
code: coupon.code,
query: coupon.query,
rating: coupon.rating,
category: coupon.category,
recomended: coupon.recomended
})
await addCoupon.save()
await db.Post.destroy({
where: {
uin: coupon.uin
}
})
}
} catch (e) {
console.log(e)
}
}
Код планировщика задач:
const cron = require('node-cron')
const service = require('./cron/service')
const checkEndedCoupons = cron.schedule('45 23 * * *', async () => {
await service.deleteOldCoupons()
},
{
timezone: 'Europe/Moscow'
})
checkEndedCoupons.start()
При запуске планировщика через pm2 потребляемая память со временем растёт, за час доходит до 500 мегабайт.
ОС:
Ubuntu-20.04
;
node.js:
16.15.1v
;
pm2:
5.2.0v
;
Вот так процесс выглядит спустя полчаса: