我正在使用 kue 进行长时间运行的操作。我希望能够跟踪操作进度。
var kue = require('kue'),
queue = kue.createQueue();
var daJob = queue.create('da', {
title: 'data analysis'
, batchSize: req.params.batchSize
}).save( function(err){
if( !err ) console.log( daJob.id );
});
// listeners on the different events
daJob.on('complete', function(result){
console.log('Job completed with data ', result);
daJob.remove();
}).on('failed attempt', function(errorMessage, doneAttempts){
console.log('Job failed');
}).on('failed', function(errorMessage){
console.log('Job failed');
}).on('progress', function(progress, data){
console.log('progress'+progress);
});
queue.process('da', function(daJob, done){
var total = 0;
async.parallel([
function(callback){
Col1.count({}, function(err, c) {
total += c;
callback();
});
},
function(callback){
Col2.count({}, function(err, c) {
total += c;
callback();
});
},
function(callback){
Col3.count({}, function(err, c) {
total += c;
callback();
});
}], function done(err, results) {
if (err) console.error(err);
var count = 0;
async.parallel([
function (callback) {
var cur1 = col1.find().lean().cursor({batchSize: req.params.batchSize});
cur1.on('data', function (mobileTN) {
count++;
functions.workMobileRecord(mobileTN);
console.log('mobile ' +count/total);
daJob.progress(count,total);
});
cur1.on('close', function () {
callback();
});
},
function (callback) {
var cur2 = col2.find().lean().cursor({batchSize: req.params.batchSize});
cur2.on('data', function (fixedTN) {
count++;
console.log(count/total);
daJob.progress(count,total);
});
cur2.on('close', function () {
callback();
});
},
function (callback){
var cur3 = col3.find().lean().cursor({batchSize:req.params.batchSize});
cur3.on('data', function(videoTN){
count++;
console.log(count/total);
daJob.progress(count,total);
});
cur3.on('close', function () {
callback();
});
}], function done(err, results) {
if (err) console.error(err);
done(results);
});
});
});
当我在 .on('progress') 中打印进度变量时,它总是打印为 0。
根据文档:
作业进度对于视频转换等长时间运行的作业非常有用。要更新作业的进度,只需调用 job.progress(completed, total [, data]):
工作进度(帧,totalFrames);数据可用于传递有关工作的额外信息。例如,带有一些额外上下文数据的消息或对象的当前状态。
怎么可能调试这个?文档不是最新的吗?