使用node-cron實現Node.js定時任務方式
更新時間:2025年10月25日 13:48:53 作者:結城
node-cron是一個輕量級的Node.js庫,用于在指定時間或間隔執(zhí)行任務,它支持Cron表達式,適用于定時任務場景,文章還介紹了基礎用法、高級功能、實際應用示例以及注意事項
1. 簡介
node-cron 是一個輕量級的Node.js庫,用于在指定時間或間隔執(zhí)行任務。
它是Unix系統(tǒng)cron工具的JavaScript實現,適用于需要定時執(zhí)行腳本的場景(如數據備份、定期爬蟲等)。
2. 安裝
npm install node-cron # 或 yarn add node-cron
3. 基礎用法
import cron from 'node-cron';
// 每分鐘執(zhí)行
cron.schedule('* * * * *', () => {
console.log('每分鐘觸發(fā)');
});
4. Cron表達式詳解
表達式由5個字段組成:
* * * * * ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ └── 星期幾 (0 - 7) (0和7代表周日) │ │ │ └────── 月份 (1 - 12) │ │ └────────── 日期 (1 - 31) │ └────────────── 小時 (0 - 23) └─────────────────── 分鐘 (0 - 59)
常用示例:
| 表達式 | 說明 |
|---|---|
| */5 * * * * | 每5分鐘 |
| 0 * * * * | 每小時整點 |
| 0 0 * * * | 每天午夜 |
| 0 9 * * 1-5 | 工作日早上9點 |
| 30 3 15 * * | 每月15日凌晨3:30 |
5. 高級功能
5.1 帶參數配置
const task = cron.schedule('*/10 * * * *', () => {
console.log('每10分鐘執(zhí)行');
}, {
scheduled: true, // 是否立即啟動
timezone: 'Asia/Shanghai' // 時區(qū)設置
});
5.2 任務控制
// 暫停任務 task.stop(); // 恢復任務 task.start(); // 檢查任務狀態(tài) console.log(task.getStatus()); // 返回 'running' 或 'stopped'
6. 實際應用示例
示例1:每日數據清理
import cron from 'node-cron';
import cleanupDatabase from './cleanup.js';
// 每天凌晨3點清理
cron.schedule('0 3 * * *', () => {
console.log('開始數據庫清理...');
cleanupDatabase();
});
示例2:API定時請求
import axios from 'axios';
// 每30分鐘獲取天氣數據
cron.schedule('*/30 * * * *', async () => {
const res = await axios.get('https://api.weather.com/data');
console.log('天氣數據:', res.data);
});
7. 注意事項
- 精度問題:Node.js事件循環(huán)可能導致最多幾毫秒的延遲
- 錯誤處理:務必在任務函數中添加try/catch
- 長任務:避免任務執(zhí)行時間超過間隔時間
- 集群環(huán)境:在多進程部署時需要額外處理防止重復執(zhí)行
8. 替代方案
node-schedule:更復雜的調度規(guī)則bull:分布式任務隊列- 系統(tǒng)級cron:通過
child_process調用
提示:在生產環(huán)境中建議添加日志記錄和監(jiān)控,可以使用winston或bunyan記錄任務執(zhí)行情況。
參考資料:
- node-cron官方文檔:https://github.com/node-cron/node-cron
- Cron表達式標準:IEEE Std 1003.1
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Node.js 數據庫 CRUD 項目示例詳解(完美解決方案)
這篇文章主要介紹了Node.js 數據庫 CRUD 項目示例詳解(完美解決方案),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-04-04
利用Chrome DevTools直接調試Node.js和JavaScript的方法詳解(并行)
現在我們可以用瀏覽器調試node.js了!!!下面這篇文章主要介紹了利用Chrome DevTools直接調試Node.js和JavaScript的方法步驟,文中介紹的很詳細,需要的朋友可以參考學習,下面來一起看看吧。2017-02-02

