2013-05-31 7 views
7

Wie kann ich mithilfe von Kue einen Job planen, der einmal pro Donnerstag ausgeführt wird? Die Kue Readme erwähnt, dass ich einen Job verzögern kann, aber was ist mit der wiederholten Ausführung des Jobs zu einer bestimmten Zeit?Wie plane ich jeden Donnerstag einen Job mit Kue?

Ich kann mit einem Cron-Job machen, was ich will, aber ich mag Kues Funktionen.

Was ich will ist, einen Job einmal am Donnerstag zu bearbeiten, aber nur einmal.

Antwort

14

Ich hatte eine ähnliche Frage und ich kam im Grunde mit dem folgenden. Wenn jemand anders eine andere Lösung hat, würde ich gerne andere Ideen sehen.

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 hat nur minimale Dokumentation, aber die Quelle ist gut kommentiert und leicht

0

Werfen Sie einen Blick auf kue-Scheduler zu lesen. Ich bin mir ziemlich sicher, dass Sie in der Lage sein sollten, so etwas zu tun:

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

kue-Scheduler docs: https://github.com/lykmapipo/kue-scheduler; Link in ihren Dokumenten zu cron Zeug: https://github.com/kelektiv/node-cron;