2016-01-21 5 views
10

こんにちは、Kueを使用してジョブを作成しています。kueノードjsで既に作成されたジョブを更新することは可能ですか

jobs.create('myQueue', { 'title':'test', 'job_id': id ,'params': params }) 
      .delay(milliseconds) 
      .removeOnComplete(true) 
      .save(function(err) { 
       if (err) { 
        console.log('jobs.create.err', err); 
       } 

     }); 

すべてのジョブに遅延時間がありますが、通常は3時間です。

ここで、新しいジョブを作成してIDを取得したいすべての着信リクエストを確認します。

上記のコードからわかるように、私がジョブを作成しているとき、ジョブIDをジョブに追加します。

これで、着信IDをキュー内の既存のジョブのjob_idで確認し、一致するIDが であれば、その既存のジョブを新しいパラメータで更新します。

私のジョブキューには毎回ユニークなjob_idがあります:)。

は可能ですか?私はたくさんの検索をしましたが、ヘルプが見つかりませんでした。私はkueを確認しましたjson API。取得ジョブを作成して取得するだけで既存のレコードを更新することはできません。

ありがとうございます。

+0

更新方法を試しましたか? https://github.com/Automattic/kue/blob/master/lib/queue/job.js#L807 – Hugeen

+0

ジョブを作成する前にjson APIを使用してGET/job/を作成してください。存在する場合(ステータス200)、ジョブを更新します。存在しない場合(状態404)、ジョブを作成します。 – Monkpit

答えて

11

これはドキュメントおよび例では触れられていませんが、jobの場合はupdateメソッドがあります。

あなたはjob_idによって、このように自分の仕事を更新することができます。

// you have the job_id 
var job_id_to_update = 1; 
// get delayed jobs 
jobs.delayed(function(err, ids) { 
    ids.forEach(function(id) { 
    kue.Job.get(id, function(err, job) { 
     // check if this is job we want 
     if (job.data.job_id === job_id_to_update) { 
      // change job properties 
      job.data.title = 'set another title'; 
      // save changes 
      job.update(); 
     } 
    }); 
    }); 
}); 

完全な例がhereです。

更新:kueで知られている「ネイティブ」ジョブIDの使用を検討することもできます。 ジョブを作成するときには、ジョブIDを取得することができます。

var myjob = jobs.create('myQueue', ... 
    .save(function(err) { 
     if (err) { 
      console.log('jobs.create.err', err); 
     } 
     var job_id = myjob.id; 
     // you can send job_id back to the client 
}); 

を今、あなたは直接リストをループせずにジョブを変更することができます。

kue.Job.get(id, function(err, job) { 
    // change job properties 
    job.data.title = 'set another title'; 
    // save changes 
    job.update(); 
}); 
+0

「遅延」期間が更新されますか?私のコードは、更新前後の遅延は同じです – Sahas

関連する問題