JavaScript >> Javascript 文檔 >  >> JavaScript

使用 node-cron 在節點中運行定期任務

什麼是 Cron?

Cron 是一個調度實用程序,在類 Unix 系統的後台作為守護進程運行。它非常適合運行定期任務,可以是您選擇的任何任務,例如啟動備份或清除數據庫中的數據。

您可以使用 crontab -e 通過命令行向 Cron 添加任務 命令。使用 -e 參數會將其置於編輯模式並打開您的默認編輯器,您可以在其中添加作業。命令的語法如下所示:

1 2 3 4 5 [USER] /path/to/command arg1 arg2

數字 1-5 代表您可以為調度作業指定的不同時間增量。更多詳情如下:

  • 1:分鐘 (0-59)
  • 2:小時(0-23)
  • 3:天 (0-31)
  • 4:月份(0-12,其中 12 是 12 月)
  • 5:星期幾(0-7,其中星期日是 0 或 7)

USER 參數是可選的,用於指定命令應該作為哪個用戶運行。您還可以使用 -u 指定用戶 選項。調度參數還有很多選項和變體,但我們不會在這裡詳細介紹。互聯網上有很多其他資源,您可以在其中找到這些詳細信息。

下面是一個如何安排 Cron 運行腳本的簡單示例:

45 17 3 * * /path/to/script.sh

Cron 會在每個月的第三天下午 5:45 運行這個腳本。雖然語法一開始可能有點混亂,但它實際上是一種非常強大的安排重複任務的方法。這種格式已被許多程序和實用程序用於指定 schedules.dq4

節點-cron

它是什麼?

Cron 實用程序已成為調度任務的代名詞,這就是 node-cron 得名。它實際上並不使用或與下面的 Cron 實用程序交互,而是使用 Node 的 setTimeout() 為您安排和運行定期任務 功能。它通過解析您指定的 Cron 格式計劃來做到這一點,確定下一個“滴答”應該是什麼時候,並相應地設置超時。

如何使用

使用 node-cron ,您將不得不安排一個以編程方式運行的函數,這實際上可能比必須弄亂命令行更方便。一個簡單的函數可以這樣安排:

var cron = require('cron');

var job = new cron.CronJob('* * * * *', function() {
	console.log('Function executed!');
}, null, true);

運行此代碼時,您將看到文本 'Function executed! ' 每分鐘打印一次到控制台。

您甚至可以更花哨地指定任務運行的時區。或者,另一種選擇是告訴 node-cron 還沒有開始工作。這樣您就可以初始化作業,然後使用 .start().stop() 僅在需要時使用方法。有關參數和選項的完整列表,請參閱完整文檔。

優點和缺點

就個人而言,我真的很喜歡 node-cron 因為您可以輕鬆地以編程方式安排代碼運行。由於它在 Node 上運行,因此您可以在任何支持 Node 的系統(如 Windows)上使用它,而不僅僅是類 Unix 系統。所以無論你用它做什麼,代碼都比直接使用 Cron 更獨立於系統。

在我看來,最大的缺點是,因為它沒有在下面使用 Cron,所以我們不會像使用 Cron 那樣獲得持久性。我的意思是在系統重新啟動時,我們的“工作”將不再運行。相反,您必須做一些額外的工作才能讓 Node 進程再次運行,例如通過在 /etc/init.d/ 中放置/鏈接它來設置它以在啟動時運行 .做起來不難,但也不是很方便。


上一篇
Tutorial JavaScript 教程
  1. 使用 vanilla JS 進行分析:頁面瀏覽量

  2. Google Places API - 地點詳情請求未定義

  3. 冒泡和捕獲 JS 事件

  4. SASS(語法上很棒的樣式表)- 基礎(第 2 部分)

  5. 無法連接到運行 Socket.io 的遠程服務器

  6. 使用 Create React App 開發瀏覽器擴展

  7. 之字形方向

  1. 凱撒密碼 - 挑戰 3

  2. 反應原生導航不顯示堆棧屏幕

  3. ✉如何製作聊天應用✉

  4. 如何在 Laravel 8 中下載文件

  5. Reat 上下文 API 項目

  6. 使用 Postgresql+Nestjs+Typeorm 進行地理定位

  7. 開發者賓果

  1. 使用 Plop.js 以光速創建反應組件

  2. 如何使用 React 和 Tailwindcss 在 4 個步驟中創建一個側邊欄,如daily.dev 擴展

  3. 使用 Nodejs 和 mongoDB 進行身份驗證 - 第 3 部分

  4. 在 Storybook 中測試 Angular 組件