一尘不染

Node.js setTimeout持续24小时-有任何警告吗?

node.js

一个简单的问题,我想将24或12个小时的超时设置Node.js为定期(每天一次或两次)来检查一些数据库数据并清除可疑垃圾(如果有)。

我需要注意由于设置了巨大的超时而引起的任何可能的问题或性能问题吗?我不介意毫秒数不是精确的12-24小时,也不介意在服务器崩溃时丢失此超时,因为无论如何我将在服务器启动时运行相同的垃圾收集器。

结论:

  • 我没有使用本机OS cron运行单独的脚本,因为我需要访问此脚本中的当前Node.js进程数据。
  • 最后,我决定使用https://www.npmjs.com/package/cron 软件包,因为它具有在特定时间(大概是在服务器负载较低时)进行退避的能力。
  • 感谢大家的快速回复!

阅读 306

收藏
2020-07-07

共1个答案

一尘不染

我已经成功使用了该软件包cron。它使用简单,通常与CronTab兼容。我有一个每月运行一次的工作,自去年以来一直有效,所以我可以证明这一点。

话虽如此,该程序包最终仅在setTimeout内部使用,因此您这样做没有任何实际问题。如果您的超时数太大(大于最大JavaScript整数),则可能有问题,但1000 * 60 * 60 * 24比这小得多。

显然,如果您的系统出现故障或脚本因其他原因而崩溃,则超时将不起作用。

您也可以crontab直接使用(如果有)(或Windows任务计划)。

2020-07-07