2

私は自分が間違っていることを理解できません。おそらく誰かがそれを指摘することができます。「ジョブ完了」イベントが発生しない理由を突き止めようとしています。

var kue = require('kue'),           
jobs = kue.createQueue();
var util= require('util');
var job = jobs.create('test',  util.puts('123')).on('complete', function(){
    console.log("Job complete");
}).on('failed', function(){
    console.log("Job failed");
}).on('progress', function(progress){
    process.stdout.write('\r  job #' + job.id + ' ' + progress + '% complete');
});

これをノードで実行すると、123 が出力されますが、ジョブが完了したとは言いません。

4

3 に答える 3

4

この質問は古いですが、配置してもこの問題に遭遇した人のための解決策はまだインターネット上にありませんsave()...私は自分で問題を解決するために3つのステップを作成しました:

1.save()ジョブにハンドラーを設定した後、ジョブでメソッドを呼び出すようにしてください。

var job = queue.create('some process', some_args);

job.on('complete', function(result) {

  console.log('complete');

}).on('failed', function(result) {

  console.log('failed');

}).removeOnComplete(true).save();

PS また、完了時にジョブを削除することをお勧めします。そうしないと、redis メモリがいっぱいになります。

2. ハンドラーが正常であることを確認します。
私自身、イベント ハンドラーを使って実験し、いくつかの引数を渡そうとしました。「失敗」イベント ハンドラは、エラー コードと、done(err, data)メソッドを介して渡したその他のデータの両方を受け入れました。これは正しくありませんでした。したがって、ドキュメントと公式の Kue の例をチェックして、コードにバグがないことを確認してください。

3. 何も解決しない場合はredis-cli flushall、ターミナルで実行します。
注意してください!!! これにより、redis 内のすべてが削除されます。私はそれに慣れていないので、システム上の Kue の依存関係としてのみ使用されます。はっきりとはわかりませんが、これにより、redis で使用する可能性のあるデータが破壊される可能性があると思います。それは何とか問題を解決しますが、それ以上何も役に立たない場合。

皆さん、Kue を redis で修正するための他の安全な方法を提案してください。

PSは確認していませんが、ジョブのプロセス名を変更すると(私の例では「何らかのプロセス」です)、問題を回避できると思います。

于 2016-07-11T16:35:01.240 に答える
1

job.save()が実行された後に実行する必要があると思います.create

于 2013-03-11T10:50:16.910 に答える