首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kue作业进度始终为0

kue作业进度始终为0
EN

Stack Overflow用户
提问于 2017-12-12 16:42:24
回答 1查看 503关注 0票数 1

我在用kue做长时间的手术。我希望能够追踪行动的进展。

代码语言:javascript
复制
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中打印进度变量(“进度”)时,它总是以0的形式打印出来。

根据文件:

工作进展

作业进度对于诸如视频转换等长期运行的作业非常有用。要更新作业的进度,只需调用job.progress(已完成、总计、数据): job.progress(frames,totalFrames);数据可以用来传递关于作业的额外信息。例如,具有特定上下文数据的消息或对象具有当前状态。

怎么可能调试这个呢?文件不及时吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-13 17:54:48

这似乎是与知识有关的问题。

在为数据设置一个值(应该是可选的)之后,它就开始工作了。

我还注意到,有时作业停止其进度事件的更新。我找到的解决方案是重命名正在执行这项工作的任务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47777534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档