亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nodejs中如何做定時任務

發布時間:2021-10-25 10:05:18 來源:億速云 閱讀:174 作者:iii 欄目:web開發

本篇內容主要講解“Nodejs中如何做定時任務”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Nodejs中如何做定時任務”吧!

Nodejs中如何做定時任務

目前我們遇到了這樣一個需求,每個用戶都可以自定義定時推送,定時任務的時間配置由用戶自己配置,隨時修改,而不是傳統的由服務器設定好時間跑定時任務。

如果是已知定時任務循環周期,那么Linux Crontab 定時任務即可實現。在node中也已經有相對成熟的方案。下面將我自己了解到的Node定時任務方案方案做一個介紹。

egg框架提供的schduler定時任務

egg是阿里旗下的Node企業級應用框架,它提供了一套機制給開發者優雅的編寫定時任務,詳細參考官方文檔:https://eggjs.org/zh-cn/basics/schedule.html ,這里不對具體用法做詳細闡述,只簡單講一下它的配置用法。

1.靜態定時任務,即定時周期,處理邏輯寫死。

2.動態配置定時任務,這種相對來說靈活一點,開發者可以通過配置文件控制定時任務周期。

3.通過代碼手動觸發定時任務,我們可以根據一些邏輯判斷是否觸發定時任務。

從上述三點看,egg提供的定時任務不能滿足我們需要用戶自行配置定時周期的需求,所以只能尋求其他方案,通過查詢資料我們發現了node-schedule的庫也提供了定時任務的功能。

node-schedule

在瀏覽了node-schudule的文檔 https://www.npmjs.com/package/node-schedule 之后,他的用法如下:

const schedule = require('node-schedule');

const job = schedule.scheduleJob('42 * * * *', function(){
  console.log('The answer to life, the universe, and everything!');
});

是的,他支持自定義定時周期,可以滿足我們的需求,可以作為我們的選擇,Nice!

繼續瀏覽其他開發者的使用文章,發現有一個node-schedule的相關問題記錄,簡要說就是定時器在預定時間執行了2次,具體問題見原文:https://cnodejs.org/topic/5b58414b8d66b90b2b7384a7 。這是一個低概率的問題,我們沒有去做驗證,因為我們的需求,及時定時器執行兩次,對我們的結果并沒有影響,所以這不是阻礙我們使用它的障礙,有興趣的同學可以去測測bug。

寫在最后

最后這里是對我們自己項目定時定時任務解決方案的總結,不感興趣的同學可略過。

我們的后端就是用的egg框架,所以最后我們的解決方案是在agent進程中加了node-schdule的定時器,用戶的定時器都會同步的agent進程中執行,目前我們的用戶量不大,暫時只想到了這種解決方式,后續起量后可能會分布式部署后臺。

這會是一個問題,量大的話單進程跑也會是一個問題,并且egg本身不建議在agent進程中做太多業務相關的東西。還有個比較重要的是agent是輔助進程,一些work的公共工作實在agent中完成的,agent發生未捕獲的錯誤不會退出重啟,所以容錯處理必須要做,而且要做好。

到此,相信大家對“Nodejs中如何做定時任務”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜山县| 溧水县| 兰溪市| 泾川县| 诸暨市| 会同县| 梧州市| 合水县| 新丰县| 米易县| 建瓯市| 东城区| 澜沧| 宜宾县| 井冈山市| 奉新县| 南汇区| 黎平县| 准格尔旗| 洛扎县| 莆田市| 衡南县| 丘北县| 内丘县| 丰镇市| 吉林市| 沁源县| 鄯善县| 临猗县| 贞丰县| 禹城市| 晋城| 普兰县| 石台县| 唐山市| 北流市| 紫云| 习水县| 凤城市| 普格县| 台安县|