iboard/scripts/scheduler/index.js
2026-04-25 19:22:57 +08:00

50 lines
1.4 KiB
JavaScript

import cron from 'node-cron';
import { trigger as triggerUSDCNYRate } from '../scraper/usd-cny-rate.scraper.js';
console.log('='.repeat(70));
console.log('🚀 启动定时任务调度器');
console.log('='.repeat(70));
// 注册定时任务
const job = cron.schedule('0 0 * * *', async () => {
console.log('\n' + '='.repeat(70));
console.log('⏰ 执行定时任务: USD-CNY 汇率数据更新');
console.log('📅 执行时间:', new Date().toISOString());
console.log('='.repeat(70));
try {
await triggerUSDCNYRate();
console.log('\n✅ 任务执行成功!');
} catch (error) {
console.error('\n❌ 任务执行失败:', error.message);
} finally {
console.log('='.repeat(70));
}
}, {
scheduled: true,
timezone: 'Asia/Shanghai'
});
console.log('✅ 定时任务已启动: USD-CNY 汇率数据更新');
console.log('📅 执行表达式: 0 0 * * * (每天 0 点)');
console.log('📅 下次执行时间: 明天 00:00');
console.log('');
console.log('按 Ctrl+C 停止...');
console.log('='.repeat(70));
// 优雅处理退出
process.on('SIGINT', () => {
console.log('\n' + '='.repeat(70));
console.log('🛑 停止定时任务调度器');
console.log('='.repeat(70));
job.stop();
console.log('✅ 定时任务已停止');
console.log('\n' + '='.repeat(70));
console.log('📊 定时任务调度器已停止');
console.log('='.repeat(70));
process.exit(0);
});