feat: refine cron job

This commit is contained in:
shinya
2025-07-13 22:27:17 +08:00
parent 92642d66c9
commit ba3f3681ee
7 changed files with 76 additions and 64 deletions

View File

@@ -19,6 +19,14 @@ const intervalId = setInterval(() => {
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
console.log('Server is up, stop polling.');
clearInterval(intervalId);
// 服务器启动后,立即执行一次 cron 任务
executeCronJob();
// 然后设置每小时执行一次 cron 任务
setInterval(() => {
executeCronJob();
}, 60 * 60 * 1000); // 每小时执行一次
}
});
@@ -26,3 +34,37 @@ const intervalId = setInterval(() => {
req.destroy();
});
}, 1000);
// 执行 cron 任务的函数
function executeCronJob() {
const cronUrl = `http://${process.env.HOSTNAME || 'localhost'}:${
process.env.PORT || 3000
}/api/cron`;
console.log(`Executing cron job: ${cronUrl}`);
const req = http.get(cronUrl, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
console.log('Cron job executed successfully:', data);
} else {
console.error('Cron job failed:', res.statusCode, data);
}
});
});
req.on('error', (err) => {
console.error('Error executing cron job:', err);
});
req.setTimeout(30000, () => {
console.error('Cron job timeout');
req.destroy();
});
}