Отменяет ли 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 — это, по сути, просто асинхронный запрос.

🤔 А знаете ли вы, что...
Node.js поддерживает работу с WebSocket для двусторонней связи между клиентом и сервером.


53
1

Ответ:

Решено

Does Node.js cancel setInterval automatically?

Нет. setInterval() не отменяется автоматически по прошествии длительного времени.

Если ваша программа остановлена, а затем перезапущена, вам придется перезапустить setInterval() вручную, чтобы она продолжала работать.

Часто проблемы с длительно работающими программами возникают из-за утечки какого-либо ресурса (дескрипторы файлов, утечка памяти или какой-либо другой системный ресурс), из-за которой процесс не может выполнять свою работу через долгое время. Очевидно, что лучший способ избежать этого — иметь идеальную программу, которая никогда не допускает утечки важных ресурсов, но это один из способов, которым программисты обрабатывают медленные, трудно обнаруживаемые утечки с течением времени (особенно если они могут быть в коде библиотеки, который разработчик не видит). не знакомы или возникают только в определенных условиях ошибки, которые трудно смоделировать), заключается в перезапуске их процесса время от времени (возможно, раз в день). Это очищает процесс от любых объектов утечки и начинается заново.