gpt4 book ai didi

javascript - Kue:队列为空时通知的事件

转载 作者:行者123 更新时间:2023-11-29 21:42:42 24 4
gpt4 key购买 nike

我正在使用 kue在我的一个项目中,从数据库中删除陈旧的锁。我能够处理单个作业,例如更新 mongoDB 中的单个文档。

var kue = require('kue')
, queue = kue.createQueue();

queue.process('staleLocks', function(job, done){
removeLock(job.data.id, done);
});

function removeLock(id, done) {
// mongoDB call
done();
}

但是,我想通过在处理完队列后收集所有 ID 来一次更新所有文档。我什至可以存储所有 ID。唯一的问题是当队列被处理后,我无法跟踪某种事件来同步整个过程。

最佳答案

如果我对你的问题理解正确,我认为有队列维护函数queue.inactiveCount() described here这可能会有所帮助。

是否可以定期检查队列长度,并在计数为 0 且收集的锁数 > 0 时移除锁?有点像

// assume locksid is an array with the collected locks id
var intervalHandle = setInterval( function() {

queue.inactiveCount(function( err, total ){
if (!err && total === 0 && locksid.length > 0 ){
locksid.forEach( function(lock){
removeLock(lock);
})
}
})
}, 2000 );

// somewhere else in your code, you might want
// to stop the interval check
clearInterval( intervalHandle );

因为我不知道你的 worker 是如何构建的,所以我将 clearInterval() 调用留在了回调之外,但是如果 removeLock() 是一个时间任务,您甚至可以在 forEach() 循环完成后调用它。

希望对您有所帮助。

关于javascript - Kue:队列为空时通知的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32206917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com