2013-05-31 2 views
7

Использование Kue, как мне назначить работу, которая будет выполняться один раз в четверг? В Kue readme упоминается, что я могу отложить работу, но как насчет многократного выполнения задания в определенное время?Как назначить работу один раз в четверг с помощью Kue?

Я могу делать то, что хочу, с работой cron, но мне нравятся функции Куэ.

Я хочу обрабатывать задание один раз в любое время в четверг, но только один раз.

ответ

14

У меня был аналогичный вопрос, и я в основном придумал следующее. Если у кого-то еще есть другое решение, я бы хотел увидеть некоторые другие идеи.

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 имеет минимальную документацию, но источник хорошо прокомментирован и легко читать

0

Посмотрите на Kué-планировщик. Я уверен, что вы должны быть в состоянии сделать что-то вроде этого:

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

КУЭ-планировщик документы: https://github.com/lykmapipo/kue-scheduler; ссылка в их документах на cron stuff: https://github.com/kelektiv/node-cron;