Meteor.setInterval прерывается после +1 дня безотказной работы (обратный вызов: не определено) - PullRequest
1 голос
/ 03 мая 2019

мы наблюдаем Exception in setInterval callback: undefined через определенные промежутки времени после нескольких дней работы на почасовой основе. Перезапуск разрешает это в течение нескольких дней, пока он снова не сломается. Что может быть причиной этого?

(больше ничего не регистрируется / не генерируется, нет и трассировки стека)

        Meteor.setInterval(
            startJob(),
            1000 * 60 * 60
        );

Метеор: 1.8.0.2

1 Ответ

0 голосов
/ 06 мая 2019

Наиболее вероятной причиной сбоя является то, что вы звоните setInterval несколько раз.В краткосрочной перспективе это нормально, но в итоге у вас работает много интервальных таймеров, и это в конечном итоге станет проблемой из-за памяти и нагрузки на процессор.

Я предпочитаю использовать пакет npm node-cron, я настроил таймер в методе запуска следующим образом:

//
// These are cron-style time specifiers
//
//                       ┌───────────── minute (0 - 59)
//                       │ ┌───────────── hour (0 - 23)
//                       │ │ ┌───────────── day of month (1 - 31)
//                       │ │ │ ┌───────────── month (1 - 12)
//                       │ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday)
//                       │ │ │ │ │                                       7 is also Sunday on some systems)
//                       │ │ │ │ │
//                       │ │ │ │ │
//                       * * * * *

const TICKER_INTERVAL = '1,16,31,46 * * * *' // This runs 4 times an hour
// const TICKER_INTERVAL = '* * * * *' // This runs every minute (use when debugging)

Meteor.startup(() => {
  cron.schedule(TICKER_INTERVAL, Meteor.bindEnvironment(signoutTicker))
})

Это применимо только на сервере, конечно (вы знали, чтоне так ли?)

Я считаю, что это работает очень надежно для меня.

...