0

我正在遍历 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 做事的方式,这似乎有点不对劲。

4

0 回答 0