¿Es posible actualizar un trabajo ya creado en Kue Node.js?

Estoy creando trabajos usando 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 ); } }); 

Cada trabajo tiene un tiempo de retardo, y normalmente es de 3 horas.

Ahora voy a revisar cada solicitud entrante que quiera crear un nuevo trabajo y obtener el ID.

Como puede ver en el código anterior, cuando estoy creando un trabajo, agregaré el ID de trabajo al trabajo.

Así que ahora quiero verificar la ID entrante con los job_id s de los trabajos existentes en la cola y actualizar ese trabajo existente con los nuevos parámetros si se encuentra un ID coincidente.

Así que mi cola de trabajo tendrá job_id único cada vez :).

¿Es posible? He buscado mucho, pero no se ha encontrado ayuda. Revisé la API de Jue Kue . pero solo puede crear y obtener trabajos de recuperación, no puede actualizar registros existentes.

Esto no se menciona en la documentación y los ejemplos, pero hay un método de actualización para un job .

Puede actualizar sus trabajos por job_id esta manera:

 // 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(); } }); }); }); 

El ejemplo completo está aquí .

Actualización: también puede considerar el uso del ID de trabajo “nativo”, que es conocido por kue. Puede obtener el ID de trabajo cuando cree el trabajo:

 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 }); 

Ahora puede modificar el trabajo directamente sin pasar por la lista:

 kue.Job.get( id, function( err, job ) { // change job properties job.data.title = 'set another title'; // save changes job.update(); }); 

Solo quería publicar una actualización. Este ticket https://github.com/Automattic/kue/issues/505 tiene la respuesta para mi pregunta.

    Intereting Posts