我正在遍历 mongodb 中的一堆记录并将它们放入 kue 进行一些处理,我不会在此处放入所有代码,因为它似乎确实不适用,但我执行以下操作:
var record;
for(var x = 0; x < results.length; x++){
record = results[x];
console.log(record);
queue.create("process_images", record).priority('normal').save();
}
如果在这种情况下有什么我不应该做的事情,比如不在循环中创建队列,请指出。但无论如何,当我执行 console.log 时,我会得到如下内容:
{ id: 5577fe8a4b795f3c068fbb10,
collection_name: 'Image',
data_source: 'Mongo',
origin_dir: 'path to origin dir',
img_src: '/uploads/images/5577/5577fe8a4b795f3c068fbb10/IMG_0158.JPG' }
{ id: 5577feb84b795f3c068fbb11,
collection_name: 'Image',
data_source: 'Mongo',
origin_dir: 'path to origin dir',
img_src: '/uploads/images/5577/5577feb84b795f3c068fbb11/IMG_0018.JPG' }
这是我所期望的。
但是在我的观察者中,当我执行以下操作时:
var queue = kue.createQueue();
queue.on('job complete', function(id, result) {
kue.Job.get(id, function(err, job){
if (err) return;
job.remove(function(err){
if (err) throw err;
console.log('Removed completed job #%d', job.id);
});
});
});
queue.process("process_images", function(job, done){
check_it(job.data, done);
});
function check_it(data, done) {
console.log("handling data");
console.log(data);
// email send stuff...
done();
}
我得到以下信息:
Removed completed job #669
handling data
{ id: '55cd97a68c9f913608c5101b',
collection_name: 'Image',
data_source: 'Mongo',
origin_dir: 'path to origin dir',
img_src: '/uploads/images/55cd/55cd97a68c9f913608c5101b/11378154_422142334643881_2122676904_n.jpg' }
Removed completed job #670
handling data
{ id: '55cd97a68c9f913608c5101b',
collection_name: 'Image',
data_source: 'Mongo',
origin_dir: 'path to origin dir',
img_src: '/uploads/images/55cd/55cd97a68c9f913608c5101b/11378154_422142334643881_2122676904_n.jpg' }
一次又一次,一次又一次。一直只有那条记录,这对我来说意味着有一些我看不到的异步情况,或者我完全误解了 kue 将如何工作,因为这实际上是我保存的最后一份工作。我在这里的主要问题可能是我有点习惯于 resque 做事的方式,这似乎有点不对劲。