Javascript Node.js Kue如何重新启动失败的作业
我在node.js应用程序中用于延迟作业 我有一些问题想知道如何使用kue的API重新启动作业,而不必使用redis命令手动将作业id从失败作业列表移动到非活动作业列表 这是否可能使用kue 我不想设置固定的重试次数-我只想重试特定的作业Javascript Node.js Kue如何重新启动失败的作业,javascript,node.js,redis,delayed-job,kue,Javascript,Node.js,Redis,Delayed Job,Kue,我在node.js应用程序中用于延迟作业 我有一些问题想知道如何使用kue的API重新启动作业,而不必使用redis命令手动将作业id从失败作业列表移动到非活动作业列表 这是否可能使用kue 我不想设置固定的重试次数-我只想重试特定的作业 对于维护良好的kue替代方案,也欢迎您提出建议。我不知道这是否有效,但您可以尝试将作业状态重置为活动状态,然后再次保存作业: job.on('failed', function() { job.state('inactive').save(); 编辑:将
对于维护良好的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();
});
});
因此,您不需要对希望重试的每个作业都执行。相反,您可以在队列级别事件中对其进行筛选。请参阅正式文档中的失败尝试 默认情况下,作业只有一次尝试,即当它们失败时,它们将失败 被标记为失败,并保持这种状态,直到您进行干预。 但是,Kue允许您指定这一点,这对作业很重要 例如传输电子邮件,失败后通常会重试 毫无疑问。要执行此操作,请使用数字调用.attempts()方法 参考资料:谢谢!需要将其设置为“非活动”而不是“活动”,否则将无法再处理它。查看了代码,认为以这种方式更改状态不会将作业重新分配给给定列表。
queue.create('email', {
title: 'welcome email for tj'
, to: 'tj@learnboost.com'
, template: 'welcome-email'
}).priority('high').attempts(5).save();