Node.js: Cron 工作

在 Node.js 中使用 cron 工作有效地自動化任務

👋 歡迎瀏覽 Stackhero 文件!

Stackhero 為您提供即用型 Node.js cloud 環境,助您加快開發進度:

  • 只需一個簡單的 git push,即可於數秒內部署至生產環境,無需額外工具或手動設定。
  • 可自訂您的網域名稱,並享有自動配置 HTTPS 憑證,讓您的應用程式安全無憂,無需額外設定。
  • 自動備份一鍵更新可預測的收費模式,讓您專注於開發功能,Stackhero 會為您管理基礎設施。
  • 建基於專屬私有基礎設施,確保穩定效能及高度安全。

節省時間,減少營運負擔:您只需幾分鐘,即可於 Stackhero 的 Node.js cloud hosting 上運行您的應用程式。

在開發 Node.js 應用程式時,自動化重複性任務如發送排程電郵、清理過期數據或進行定期維護,可以顯著提高效率和擴展性。cron 模組可在 npm 上獲得(cron 模組在 npm),提供了一種簡單而有效的方法來實現這種自動化。

注意:雖然 node-cron npm 模組是另一個可用的 cron 任務工具,但本指南專注於 cron 模組及其實施。

要在您的專案中使用 cron 模組,請執行以下命令將其作為依賴項包含:

npm install cron

模組安裝完成後,您可以開始在應用程式中排程和管理 cron 工作。以下是一個實用的例子:

const cron = require('cron');
const cronJobs = [];

// 優雅地處理應用程式關閉,停止所有排程的 cron 工作。
// 當部署新代碼或關閉應用程式時,會發送終止信號(SIGTERM)。
// 這確保應用程式在退出前停止所有正在運行的 cron 工作。
process.on('SIGTERM', () => {
  cronJobs.forEach(cronJob => cronJob.stop());
});

// 排程一個每秒執行的 cron 工作。
cronJobs.push(
  new cron.CronJob(
    '* * * * * *', // 排程:每秒
    () => {
      console.log("此訊息將每秒出現。");
    },
    null,
    true
  )
);

// 排程一個每分鐘執行的 cron 工作。
cronJobs.push(
  new cron.CronJob(
    '0 */1 * * * *', // 排程:每分鐘
    () => {
      console.log("此訊息將每分鐘出現。");
    },
    null,
    true
  )
);

cron 模組使用標準 UNIX cron 語法來定義排程。以下是一些常見的例子:

  • 每秒: * * * * * *
  • 每 30 秒: */30 * * * * *
  • 每 10 分鐘: 0 */10 * * * *
  • 每 2 小時: 0 0 */2 * * *

您現在已準備好使用 cron 模組在您的 Node.js 應用程式中自動化任務。欲獲取更詳細的信息和範例,請訪問官方 cron 模組儲存庫並查看範例目錄