Agenda js:如果我的服务器在工作的预定时间出现故障怎么办?

Agenda js: what happens if my server is down on the scheduled time of a job?

假设我有一个使用 @agenda/agenda 安排的工作,像这样

agenda.schedule('tomorrow at noon', 'printAnalyticsReport', {userCount: 100});

我想知道如果我的 server/node 脚本 os 挂了会怎样?

。如果 Agenda 关闭 gracefuly,它应该会选择你的工作。

这意味着如果一切顺利,实际工作 lockedAt 字段将不会设置(将是 null),这应该会暴露您的陈旧工作以供提取。

但是,如果没有正常关闭,那么它们将被跳过,因为就议程而言,它们仍在 运行ning 中。

在这种情况下,作业处于 limbo 模式,UI tool for agenda 非常有用。它会向您显示所有作业 运行ning 并让您很好地了解正在发生的事情,因此在重新启动后您可以随时查看并解决任何问题。

另一种方法是 运行 在服务器启动时解锁所有锁定作业的脚本:

db.agendaJobs.update({}, {$set: {lockedAt: null}});

或使用 this method.

获得相同结果的更精确的方法

或者可以找到另一种比较简洁的方法 here

这里有更多关于 Agenda stop