如何在kue中取回具有特定状态的工作?

我正在使用kue作为我的工作队列,并且我想知道不使用GUI有多less工作仍然存在,有多less失败等。我如何检索这种信息?

例如,在开始处理作业队列几分钟后,我想将迄今为止失败的所有作业的状态更新为“不活动”,以便重新启动它们。

在stackoverflow上我唯一能find的相关问题就是这个 ,但是,它在处理某个事件之后,一次处理一个工作。 我的关心是不同的,因为我有兴趣检索数据库中的所有工作,具有一定的地位。

这个问题的答案提到了kue库的函数.complete,它检索数据库中所有已完成的作业。 其他可能的工作状态是否有类似的function?

我通过浏览kue源代码find了一个解决scheme。 下面的代码实现了我所需要的:

var redis = require ('redis'), kue = require ('kue'), redisClient = redis.createClient(6379, "127.0.0.1"); kue.redis.createClient = function () { return redisClient; }; kue.app.listen(3000); kue.Job.rangeByType ('job', 'failed', 0, 10, 'asc', function (err, selectedJobs) { selectedJobs.forEach(function (job) { job.state('inactive').save(); }); }); 

作为参考,这里是相关的kue源代码:

/queue/job.js:123:

 /** * Get jobs of `type` and `state`, with the range `from`..`to` * and invoke callback `fn(err, ids)`. * * @param {String} type * @param {String} state * @param {Number} from * @param {Number} to * @param {String} order * @param {Function} fn * @api public */ exports.rangeByType = function(type, state, from, to, order, fn){ redis.client().zrange('q:jobs:' + type + ':' + state, from, to, get(fn, order)); }; 

Kue源代码表明:

  • type是工作types
  • fromto是按索引的作业范围(例如,您可以指定从索引0到10的加载作业,共有11个作业)。
  • order指定获取作业的顺序。 默认是asc 。 你也可以用desc对它进行sorting