我在一个网络抓取工具应用中使用kue。如果错误符合特定条件,我想为某些失败的作业设置attempts
。例如,如果错误是由套接字挂断引起的,则作业将以1分钟的间隔重试3次。
我的代码如下所示,但不起作用
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();
答案 0 :(得分:-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);
}
});
});