+1天的正常运行时间后Meteor.setInterval中断(回调:未定义)

时间:2019-05-03 12:35:45

标签: meteor

我们每小时Exception in setInterval callback: undefined隔几天运行一段时间。重新启动可以解决几天,直到再次破裂。可能是什么原因造成的?

(没有其他记录/抛出,也没有堆栈跟踪)

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

流星:1.8.0.2

1 个答案:

答案 0 :(得分:0)

最可能导致崩溃的原因是您反复呼叫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))
})

这当然仅适用于服务器(您知道吗?)

我发现这对我来说非常可靠。