gpt4 book ai didi

javascript - 使用 meteor job collection 开始工作

转载 作者:行者123 更新时间:2023-11-30 16:29:18 29 4
gpt4 key购买 nike

我正在使用 meteor-job-collection ( https://github.com/vsivsi/meteor-job-collection );但是,我无法创造工作。

我有一个方法定义为

Meteor.methods( {
insertItems: function ( dataArray ) {
check( dataArray, [ Object ] );

dataArray.forEach( function ( element ) {
[...]
} );
}
} );

但是这个方法对内存的要求很高,所以我想把它包装在一个作业中。我如何开始这份工作?

我试过了

var job = new Job( Jobs, 'insertItems', data ).priority( 'normal' ).retry(
{
retries: 5,
wait: 15 * 60 * 1000
}
).delay( 60 * 60 * 1000 ).save();

但是我得到了错误

Error invoking Method 'jobQueue_jobSave': Internal server error [500]

我的工作集定义为

Jobs = JobCollection( 'jobQueue' );

if ( Meteor.isServer ) {
Jobs.allow( {
admin: function ( userId, method, params ) {
return true;
},
} );
}

最佳答案

您的代码中缺少很多东西。

1 - 确保在提交任何作业之前启 Action 业服务器。在服务器上的 jobCollection 上调用 startJobServer()

Jobs = JobCollection( 'jobQueue' );

if ( Meteor.isServer ) {
Jobs.allow( {
admin: function ( userId, method, params ) {
return true;
},
} );
Jobs.startJobServer();
}

2 - 您需要实现作业处理。作业只不过是一个标签,上面附有计划在某个时间点运行的数据。处理程序实现作业逻辑。在您的情况下,您需要这样的东西:

var workers = Job.processJobs('jobQueue', 'insertItems',
function (job, cb) {
insertData = job.data;
// do anything with the job data here.
// when done, call job.done() or job.fail()

job.done(); // when done successfully
job.fail("with reason or error"); //when failing

// Be sure to invoke the callback
// when work on this job has finished
cb();
}
);

关于javascript - 使用 meteor job collection 开始工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33573730/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com