作业没有重新启动

时间:2014-09-15 23:26:05

标签: javascript node.js kue

我像往常一样设置kue工作:

var job = jobs.create('phase2', s);
    job.on('complete', function (){
        console.log('Job'+job.id+' is done');
    }).on('failed', function (){
        console.log('Job'+job.id+'has failed');
    });
    job.save();

在某些情况下,我希望作业失败并自动重启。为此,我在处理器中有以下几行:

if(t==1){
    //Keep going
}else{
    console.log('PROBLEM');
    job.failed();
}

我尝试将失败的事件更改为:

.on('failed', function (){
    console.log('Job'+job.id+'has failed');
    job.state('inactive').save();
 });

如此处所示:Node.js Kue how to restart failed jobs

我也尝试在Readme中添加尝试(),如下所示:

var job = jobs.create('phase2', s).attempts(5);

这些都没有奏效。该作业被标记为“失败”'并且我的控制台显示“问题”,但我没有看到“失败”中定义的消息'监听器。

修改

经过多次阅读,我已经尝试过聆听失败的工作'队列级别的事件,使用:

  jobs.on('job failed', function(id,result){
    console.log('fail queue');
    kue.Job.get(id, function(err, job){
      job.state('inactive').save();
    });
  });

同样的结果,没有控制台日志...它似乎是除了Kue之外的其他东西,任何想法可以使事件不被激发?

1 个答案:

答案 0 :(得分:2)

对于延迟作业,您需要添加jobs.promote()以添加将延迟作业放回队列的setInterval()。也在README。所以你需要这样的东西:

jobs.on('job failed', function(id, result){
  console.log('fail queue');
  kue.Job.get(id, function(err, job){
    job.state('inactive').save();
  });
});

jobs.promote();

至少那对我的问题有用。