Условные попытки с nodejs Kue

Я использую kue в одном веб-приложении. Я хочу установить attempts для определенных неудачных заданий, если ошибки соответствуют конкретным условиям. Например, если ошибка вызвана зависанием сокета, задание будет повторяться 3 раза с интервалом 1 мин.

Мой код что-то вроде ниже, но не работает

var kue = require('kue');
var queue = kue.createQueue();
queue.process('grab', function (job, done){
    //doCrawlingJob is async call and returns promise
    doCrawlingJob(job).then(function(result){
       done();
    }.catch(function(err){
        if (err.message.indexOf("socket hang up") >= 0) {
            job.attempts(3).backoff({delay:60*1000});
            job.save(function(){
               done(err);
            });
        } else {
            done(err);
        }
    );
});
//...
var job = queue.create('grab', data).removeOnComplete(true).save();

1 ответ

Это может не ответить на ваш вопрос, но я заметил, что у вас есть некоторые ошибки форматирования во фрагменте кода. Попробуйте добавить несколько скобок, например:

queue.process('grab', function (job, done){
    //doCrawlingJob is async call and returns promise
    doCrawlingJob(job).then(function(result){
       done();
    }).catch(function(err){
        if (err.message.indexOf("socket hang up") >= 0) {
            job.attempts(3).backoff({delay:60*1000});
            job.save(function(){
               done(err);
            });
        } else {
            done(err);
        }
    });
});
Другие вопросы по тегам