Javascript Node.js 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(); 编辑:将

我在node.js应用程序中用于延迟作业

我有一些问题想知道如何使用kue的API重新启动作业,而不必使用redis命令手动将作业id从失败作业列表移动到非活动作业列表

这是否可能使用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();
    });
});

因此,您不需要对希望重试的每个作业都执行。相反,您可以在队列级别事件中对其进行筛选。

请参阅正式文档中的失败尝试

默认情况下,作业只有一次尝试,即当它们失败时,它们将失败 被标记为失败,并保持这种状态,直到您进行干预。 但是,Kue允许您指定这一点,这对作业很重要 例如传输电子邮件,失败后通常会重试 毫无疑问。要执行此操作,请使用数字调用.attempts()方法

参考资料:

谢谢!需要将其设置为“非活动”而不是“活动”,否则将无法再处理它。查看了代码,认为以这种方式更改状态不会将作业重新分配给给定列表。
 queue.create('email', {
     title: 'welcome email for tj'
   , to: 'tj@learnboost.com'
   , template: 'welcome-email'
 }).priority('high').attempts(5).save();