是否可以在 Kue Node.js 中更新已创建的作业?
Is it possible to update an already created job in Kue Node.js?
我正在使用 Kue 创建工作。
jobs.create('myQueue', { 'title':'test', 'job_id': id ,'params': params } )
.delay(milliseconds)
.removeOnComplete( true )
.save(function(err) {
if (err) {
console.log( 'jobs.create.err', err );
}
});
每个作业都有延迟时间,一般是3个小时。
现在我将检查每一个想要创建新工作的传入请求并获取 id。
从上面的代码可以看出,我在创建job的时候会把job id添加到job中。
所以现在我想用队列中现有作业的 job_id 检查传入的 id,如果匹配 id,则用新参数更新现有作业
找到了。
所以我的作业队列每次都会有唯一的 job_id :)。
可能吗?我搜索了很多,但没有找到帮助。我检查了 kue JSON API。但它只能创建和获取检索作业,不能更新现有记录。
这在文档和示例中没有提到,但是对于 job
.
有一个 update 方法
您可以通过job_id
这样更新您的职位:
// you have the job_id
var job_id_to_update = 1;
// get delayed jobs
jobs.delayed( function( err, ids ) {
ids.forEach( function( id ) {
kue.Job.get( id, function( err, job ) {
// check if this is job we want
if (job.data.job_id === job_id_to_update) {
// change job properties
job.data.title = 'set another title';
// save changes
job.update();
}
});
});
});
完整的例子是here。
更新:你也可以考虑使用"native" job ID,这个ID以kue着称。
您可以在创建作业时获取作业ID:
var myjob = jobs.create('myQueue', ...
.save(function(err) {
if (err) {
console.log( 'jobs.create.err', err );
}
var job_id = myjob.id;
// you can send job_id back to the client
});
现在您可以直接修改作业而无需遍历列表:
kue.Job.get( id, function( err, job ) {
// change job properties
job.data.title = 'set another title';
// save changes
job.update();
});
只想post更新。这张票 https://github.com/Automattic/kue/issues/505 有我问题的答案。
我正在使用 Kue 创建工作。
jobs.create('myQueue', { 'title':'test', 'job_id': id ,'params': params } )
.delay(milliseconds)
.removeOnComplete( true )
.save(function(err) {
if (err) {
console.log( 'jobs.create.err', err );
}
});
每个作业都有延迟时间,一般是3个小时。
现在我将检查每一个想要创建新工作的传入请求并获取 id。
从上面的代码可以看出,我在创建job的时候会把job id添加到job中。
所以现在我想用队列中现有作业的 job_id 检查传入的 id,如果匹配 id,则用新参数更新现有作业 找到了。
所以我的作业队列每次都会有唯一的 job_id :)。
可能吗?我搜索了很多,但没有找到帮助。我检查了 kue JSON API。但它只能创建和获取检索作业,不能更新现有记录。
这在文档和示例中没有提到,但是对于 job
.
您可以通过job_id
这样更新您的职位:
// you have the job_id
var job_id_to_update = 1;
// get delayed jobs
jobs.delayed( function( err, ids ) {
ids.forEach( function( id ) {
kue.Job.get( id, function( err, job ) {
// check if this is job we want
if (job.data.job_id === job_id_to_update) {
// change job properties
job.data.title = 'set another title';
// save changes
job.update();
}
});
});
});
完整的例子是here。
更新:你也可以考虑使用"native" job ID,这个ID以kue着称。 您可以在创建作业时获取作业ID:
var myjob = jobs.create('myQueue', ...
.save(function(err) {
if (err) {
console.log( 'jobs.create.err', err );
}
var job_id = myjob.id;
// you can send job_id back to the client
});
现在您可以直接修改作业而无需遍历列表:
kue.Job.get( id, function( err, job ) {
// change job properties
job.data.title = 'set another title';
// save changes
job.update();
});
只想post更新。这张票 https://github.com/Automattic/kue/issues/505 有我问题的答案。