13

Kueを使用してジョブを作成しています。

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 をジョブに追加します。

したがって、キュー内の既存のジョブの job_id で着信 ID を確認し、一致する ID が見つかった場合は、その既存のジョブを新しいパラメーターで更新したいと考えています。

したがって、私のジョブキューには毎回一意の job_id があります:)。

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

4

2 に答える 2

13

これはドキュメントや例には記載されていませんjob.

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();
      }
    });
  });
});

完全な例はここにあります。

更新: 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();
});
于 2016-02-03T21:08:01.590 に答える