Node.js是否会自动取消setInterval?

时间:2019-01-28 03:30:57

标签: node.js setinterval

我使用setInterval和更高版本的node-schedule每隔一个小时左右创建一个计划的呼叫,但是看起来该呼叫通常在几天后被取消。

const { scheduleJob } = require('node-schedule');

for (let i = 0; i < 24; ++i)
  scheduleJob(`0 ${i} * * *`, tensorFlowAPIs);

这是节点计划版本。

setInterval(tensorFlowAPIs, 60 * 60 * 1000);

这是setInterval版本。

tensorFlowAPI本质上只是一个异步请求。

1 个答案:

答案 0 :(得分:1)

  

Node.js是否会自动取消setInterval?

不。 setInterval()在一段时间后不会自动取消。

如果程序停止然后重新启动,则必须手动重新启动setInterval()才能使其继续运行。

长时间运行的程序经常出现问题是由于某种资源泄漏(文件句柄,内存泄漏或某些其他系统资源)导致的,导致该过程在很长一段时间后无法执行其工作。显然,避免这种情况的最佳方法是拥有一个完美的程序,该程序永远不会泄漏任何重要的资源,而是程序员随着时间的推移处理缓慢,难以检测到的泄漏的一种方法(特别是如果它们在库代码中而开发人员则不会这样做)。熟悉或仅在某些难以模拟的错误情况下发生)是每隔一段时间(也许一天一次)重新启动其过程。这样可以清除所有泄漏对象的过程并重新开始。