我无法弄清楚我做错了什么,也许是某人可以指出它。我试图找出为什么我的工作完成了#39;事件没有解雇。
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,但它不能说工作完成。
答案 0 :(得分:4)
这个问题已经过时了,但是互联网上仍然没有解决方案,即使放置save()
也遇到了这个问题...我已经为自己制定了三个步骤来解决问题:
<强> 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();
P.S。在完成时删除作业也是一种很好的做法,否则你会溢出redis内存。
<强> 2。确保你的处理人员没事。
我自己试验了事件处理程序,试图传递几个参数。我的失败&#39;事件处理程序接受了错误代码和我通过done(err, data)
方法传递的其他数据。这不对。因此,请查看文档和官方Kue示例,以确保您的代码没有被窃听。
第3。如果没有任何帮助,请在终端中执行redis-cli flushall
。
并且小心!这将删除redis中的所有内容。我自己也是菜鸟,因此它仅用作我系统上Kue的依赖。我当然不知道,但我想这可能会破坏您在redis中使用的数据。虽然它以某种方式解决了问题,但没有更多的帮助。
每个人,请随意提出任何其他安全方法来解决Kue与redis。
P.S。 Haven不会检查,但我认为,更改工作的流程名称(在我的示例中,某些流程&#39;)也可以解决问题。
答案 1 :(得分:1)
我认为您需要在job.save()
执行后运行.create
。
答案 2 :(得分:1)