如何在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 -
from
,to
是按索引的作业范围(例如,您可以指定从索引0到10的加载作业,共有11个作业)。 -
order
指定获取作业的顺序。 默认是asc
。 你也可以用desc
对它进行sorting