我有一个议程工作,当我第一次定义它时运行得很好。我可以在MongoDB中看到相应的文档,一切都很好。但是,当服务器重新启动或我按“ Ctrl + C”并终止该过程时,因此在重新运行我的应用程序后,该作业之后将不会运行。
git上也对此问题进行了很多讨论。
我尝试过:
1-优雅地处理SIGTERM
2-运行MongoDB更新查询,并在每次启动应用程序时将lockAt,lastModifiedBy,lastRunAt设置为null。
两者都不适合我。我在MongoDB中可以看到该作业未处于锁定状态,所以我感到困惑,如果重新启动该应用程序,为什么它不运行?
答案 0 :(得分:1)
好吧,如果您已尝试了所有方法,则最好只更新所有无法启动的作业,例如:
agendaJobs.update({
lockedAt: {
$exists: true
},
lastFinishedAt: {
$exists: false
}
}, {
$unset: {
lockedAt: undefined,
lastModifiedBy: undefined,
lastRunAt: undefined
},
$set: {
nextRunAt: new Date()
}
}, {
multi: true
})
这是强行解决问题并基本上将所有锁定的作业设置为实质上重新安排的一种方法。
这是git上建议的方法之一。
如果您想了解整个上下文,它来自here。