我使用kue在我的Node.js应用程序延迟作业。Node.js的苦厄如何重新启动失败的作业
我有一些问题要弄清楚如何使用kue的API重新启动作业,而无需将作业的ID从失败作业列表手动移动到使用redis命令的非活动作业列表。
这可能使用kue吗?
我不想设置固定次数的重试次数 - 我只是想重试特定的作业。
建议保持良好的替代KUE也欢迎。
我使用kue在我的Node.js应用程序延迟作业。Node.js的苦厄如何重新启动失败的作业
我有一些问题要弄清楚如何使用kue的API重新启动作业,而无需将作业的ID从失败作业列表手动移动到使用redis命令的非活动作业列表。
这可能使用kue吗?
我不想设置固定次数的重试次数 - 我只是想重试特定的作业。
建议保持良好的替代KUE也欢迎。
我不知道这是工作,但你可以再次尝试重置工作,以积极的状态,并保存作业:
job.on('failed', function() {
job.state('inactive').save();
编辑:设置状态设置为非活动将正确地重新入队的任务。
这也可以使用队列级事件来完成。
queue.on('job failed', function(id, result) {
kue.Job.get(id, function(err, job) {
if (!err && shouldRetry(job))
job.state('inactive').save();
});
});
因此,您不需要为您想要重试的每项工作都做。相反,您可以在队列级别事件中对其进行过滤。
看到失败尝试在官方文档
默认的工作只有一个尝试,那就是当他们失败了,他们 被标记为失败,并保持下去,直到你干预。 然而,苦厄允许你指定这一点,这是工作 如传输电子邮件,其发生故障时,通常可以重试 没有问题很重要。为此,用数字调用.attempts()方法。
queue.create('email', {
title: 'welcome email for tj'
, to: '[email protected]'
, template: 'welcome-email'
}).priority('high').attempts(5).save();
的感谢!需要将其设置为“不活动”而不是“活动”,否则将不再处理。看看代码,并认为通过这种方式改变状态不会将工作重新分配给给定的列表。 – Matthias