【问题标题】:Conditional attempts with nodejs Kuenodejs Kue 的条件尝试
【发布时间】:2016-02-17 12:27:47
【问题描述】:

我在一个网络爬虫应用程序中使用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();

【问题讨论】:

  • 我也有同样的问题,你找到答案了吗?

标签: node.js redis kue


【解决方案1】:

这可能无法回答您的问题,但我注意到您在代码 sn-p 中有一些格式错误。尝试像这样添加一些括号:

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

【讨论】:

  • 为什么这被否决了?他的代码永远不会工作,因为它在“then”周围没有括号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多