Meteor.setInterval在+;1天的正常运行时间(回调:未定义)
我们在setInterval回调中遇到了Meteor.setInterval在+;1天的正常运行时间(回调:未定义),meteor,Meteor,我们在setInterval回调中遇到了异常:在每隔几天按小时运行一次之后,间隔未定义。重新启动会解决它几天,直到它再次像这样断开。这可能是什么原因 (没有记录/抛出任何其他内容,也没有堆栈跟踪) Meteor:1.8.0.2导致崩溃的最可能原因是您反复调用setInterval。在短期内,这是可以的,但最终会有许多间隔计时器运行,这最终会成为一个问题,因为内存和处理负载 我更喜欢使用npm包节点cron,我用如下启动方法设置计时器: // // These are cron-style tim
异常:在每隔几天按小时运行一次之后,间隔未定义。重新启动会解决它几天,直到它再次像这样断开。这可能是什么原因
(没有记录/抛出任何其他内容,也没有堆栈跟踪)
Meteor:1.8.0.2导致崩溃的最可能原因是您反复调用setInterval
。在短期内,这是可以的,但最终会有许多间隔计时器运行,这最终会成为一个问题,因为内存和处理负载
我更喜欢使用npm包节点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))
})
当然,这只适用于服务器(您知道这一点,不是吗?)
我发现这对我来说非常可靠。你能为startJob
添加代码吗?可能有一个错误没有显示在控制台上。许多Meteor函数设计用于处理其内部异常,以防止服务器完全停止(导致整个应用程序崩溃),可能这一个并不是“打印”错误。#Hi@Jankapunkt该方法相当大,并且调用了一系列其他函数。所有这些函数都不会抑制任何错误。虽然有两个try/catch块,但它们总是将错误记录在console.log中。此错误是否也发生在较短的时间范围内?如果是这样的话,最好改进代码的可重复性,这样我们也可以在我们的机器上试用。我同意Jankapunkt的观点,这几乎肯定是startJob
中的内容。它不应该是“Meteor.setInterval(startJob,1000*60*60);”吗?
//
// 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))
})