假设我有一个使用@agenda/agenda安排的工作,就像这样
agenda.schedule('tomorrow at noon', 'printAnalyticsReport', {userCount: 100});
我想知道如果我的服务器/节点脚本操作系统关闭会发生什么?
- 议程是否能够在下次服务器重新启动时重新启动过去的工作?
- 如果没有,我怎样才能达到同样的效果?
假设我有一个使用@agenda/agenda安排的工作,就像这样
agenda.schedule('tomorrow at noon', 'printAnalyticsReport', {userCount: 100});
我想知道如果我的服务器/节点脚本操作系统关闭会发生什么?
是和不是。如果它被关闭,议程应该选择你的工作gracefuly
。
这意味着,如果一切顺利,lockedAt
将不会设置(将是null
)实际的工作字段,这应该会暴露您的陈旧工作以供拾取。
但是,如果没有正常关闭,那么它们将被跳过,因为就议程而言,它们仍在运行。
在这种工作处于limbo
模式的情况下,用于议程的 UI 工具非常有用。它向您显示所有正在运行的作业,并为您提供对正在发生的事情的一个很好的概述,因此在重新启动后您可以随时查看并解决任何问题。
另一种方法是运行脚本以在服务器启动时解锁所有锁定的作业:
db.agendaJobs.update({}, {$set: {lockedAt: null}});
或者更精确的方法来使用这种方法达到相同的结果。
或者可以在这里找到另一种比较干净的方法。
这是关于议程站的更多信息