【问题标题】:How to schedule a job once every Thursday using Kue?如何使用 Kue 每周四安排一次工作?
【发布时间】:2013-05-27 20:21:53
【问题描述】:

使用Kue,如何安排作业每周四执行一次? Kue 自述文件提到我可以延迟一个 Job,但是在特定时间重复执行 Job 呢?

我可以通过 cron 工作做我想做的事,但我喜欢 Kue 的功能。

我想要的是在星期四的任何时间处理一次工作,但只有一次。

【问题讨论】:

    标签: node.js jobs kue


    【解决方案1】:

    看看 kue-scheduler。我很确定您应该能够执行以下操作:

    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 文档:https://github.com/lykmapipo/kue-scheduler; 在他们的文档中链接到 cron 内容:https://github.com/kelektiv/node-cron;

    【讨论】:

      【解决方案2】:

      我有一个类似的问题,我基本上想出了以下问题。如果其他人有不同的解决方案,我很乐意看到其他想法。

      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 的文档很少,但源代码注释很好且易于阅读

      【讨论】:

        猜你喜欢
        • 2017-11-17
        • 1970-01-01
        • 2017-10-31
        • 1970-01-01
        • 2012-04-07
        • 2012-12-07
        • 1970-01-01
        相关资源
        最近更新 更多