2013-05-31 13 views
7

Utilizzo di Kue, come si pianifica un lavoro da eseguire una volta ogni giovedì? Il readme di Kue menziona che posso ritardare un lavoro, ma per quanto riguarda l'esecuzione ripetuta del lavoro in un momento specifico?Come programmare un lavoro una volta ogni giovedì usando Kue?

Posso fare quello che voglio con un cron job, ma mi piacciono le caratteristiche di Kue.

Quello che voglio è elaborare un Job una volta in qualsiasi momento di giovedì, ma solo una volta.

risposta

14

Ho avuto una domanda simile e fondamentalmente mi è venuta in mente quanto segue. Se qualcun altro ha una soluzione diversa mi piacerebbe vedere altre idee.

var jobQueue = kue.createQueue(); 

// Define job processor 
jobQueue.process('thursday-jobs', function (job, done) { 

    var milisecondsTillThurs = // TODO: Get the time until next thursday. For this I used moment.js 

    // do this job again next Thursday 
    jobQueue.create('thursday-jobs').delay(milisecondsTillThurs).save(); 

    // For Example purpose this job waits then calls done 
    setTimeout(function() { 
     done(); 
    }, 10000); 


}); 

// Use some initialization code to check if the job exists yet, and create it otherwise 
kue.Job.rangeByType('thursday-jobs','delayed', 0, 10, '', function (err, jobs) { 
    if (err) {return handleErr(err);} 
    if (!jobs.length) { 
     jobQueue.create('thursday-jobs').save(); 
    } 
    // Start checking for delayed jobs. This defaults to checking every 5 seconds 
    jobQueue.promote(); 
}); 

Kue ha la documentazione minima, ma la fonte è ben commentato e facile da leggere

0

Date un'occhiata a Kue-scheduler. Sono abbastanza sicuro che si dovrebbe essere in grado di fare qualcosa del genere:

var kue = require('kue-scheduler'); 
var Queue = kue.createQueue(); 

//create a job instance 
var job = Queue 
      .createJob('every', data) 
      .attempts(3) 
      .backoff(backoff) 
      .priority('normal'); 

//schedule it to run every Thursday at 00:00:00 
var thursday = '0 0 0 * * 4'; 
Queue.every(thursday, job); 


//somewhere process your scheduled jobs 
Queue.process('every', function(job, done) { 
    ... 
    done(); 
}); 

docs Kue-Scheduler: https://github.com/lykmapipo/kue-scheduler; link nei loro documenti a cron: https://github.com/kelektiv/node-cron;

Problemi correlati