2014-09-15 2 views
2

I настроить КУЭ работу, как я обычно делаю:Работа не перезапускается

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); 

Non e из этих вещей сработало. Задание помечено как «failed», а моя консоль показывает «ПРОБЛЕМА», но я не вижу сообщение, определенное в «неудачном» прослушивателе.

EDIT

После еще чтения, я пытался слушать 'задания не удалось' событие на уровне очереди, используя:

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

Тот же результат, и нет журнала консоли ... Кажется, это что-то еще, кроме Куэ, любая идея, что могло бы сделать события не огненными?

ответ

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(); 

По крайней мере, это сработало для моей проблемы.

Смежные вопросы