我使用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本质上只是一个异步请求。
答案 0 :(得分:1)
Node.js是否会自动取消setInterval?
不。 setInterval()
在一段时间后不会自动取消。
如果程序停止然后重新启动,则必须手动重新启动setInterval()
才能使其继续运行。
长时间运行的程序经常出现问题是由于某种资源泄漏(文件句柄,内存泄漏或某些其他系统资源)导致的,导致该过程在很长一段时间后无法执行其工作。显然,避免这种情况的最佳方法是拥有一个完美的程序,该程序永远不会泄漏任何重要的资源,而是程序员随着时间的推移处理缓慢,难以检测到的泄漏的一种方法(特别是如果它们在库代码中而开发人员则不会这样做)。熟悉或仅在某些难以模拟的错误情况下发生)是每隔一段时间(也许一天一次)重新启动其过程。这样可以清除所有泄漏对象的过程并重新开始。