簡體   English   中英

Node.js setTimeout 24小時 - 任何警告?

[英]Node.js setTimeout for 24 hours - any caveats?

簡單的問題,我想在Node.js設置24或12小時的超時,以定期(每天一次或兩次)檢查一些數據庫數據並清除可疑垃圾(如果有的話)。

是否有任何可能的問題或性能問題,由設置巨大的超時引起,我需要注意? 我不介意它是不是確切的12-24小時毫秒,並不介意在服務器崩潰時失去這個超時,因為我將在服務器啟動時運行相同的垃圾收集器。

結論:

  • 我沒有使用本機OS cron來運行單獨的腳本,因為我需要訪問此腳本中的當前Node.js進程數據。
  • 最后,我決定使用https://www.npmjs.com/package/cron軟件包,以便在特定時間(可能是在服務器負載較低的情況下)進行轉發。
  • 謝謝大家快速回復!

我已經成功使用了包cron 它使用簡單,通常與CronTab兼容。 我有一份工作,每個月運行一次,自去年以來一直有效,所以我可以證明這一點。

話雖這么說,這個包最終只是在內部使用setTimeout所以你沒有真正的問題。 如果您的超時數量太大(大於最大JavaScript整數),則可能存在問題,但1000 * 60 * 60 * 24明顯小於此值。

顯然,如果您的系統出現故障或腳本由於其他原因而崩潰,則超時將無效。

如果可用(或Windows任務調度),您也可以直接使用crontab

就個人而言,我會使用cron作業來執行此類操作(在Unix / Linux中)或Windows中的“計划任務”。 在任何情況下,工作都將完全在服務器上,由服務器完成......因此,沒有理由讓JavaScript應用程序(在“其他”計算機上)參與其中。

更一般地說: “不,不要告訴別人'去睡12個小時,'不知怎的,相信這意味着他/她會及時醒來。” 而是使用鬧鍾。 計算活動應該[下一次]發生的絕對時間,然后確保活動確實 “不會更早”發生。 安排實際需要完成工作的計算機,使用該計算機上可用的任何調度工具在適當的時間完成工作。

應該沒有任何問題,但在我看來,用OS cron工作做這件事情會更好。 這將使用OS計時器,將調用您的節點應用程序; 這對所有人來說都是清楚的,即使對於那些從未見過節點或JavaScript的人來說也是如此。 此外,它會自動保護您免受長期內存泄漏,因為您的應用程序將在每次迭代后被終止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM