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