节点的调度程序,工作时间> 25天。

时间:2014-08-15 12:08:20

标签: javascript node.js cron

我需要一个在节点中制作的Web应用程序的作业调度程序。 我查看了node-cron和node-scheduler,但是booth似乎建立在Node的setTimeout()函数之上。这个问题是setTimeout()的最大超时大约为25天,如下所述: http://nodejs.org/api/globals.html#globals_settimeout_cb_ms

如果我需要安排,请说每三个月......我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

node-cronhttps://github.com/ncb000gt/node-cron/blob/master/lib/cron.js#L382

中查看此行

它基本上表明node-cron处理setTimeout()溢出并将更大的时间跨度划分为多个较小的时间跨度。你应该能够安全地使用它。

事实上,此功能is covered by node-cron's unit也会进行测试。如果提供给setTimeout()的值大于最大值,则会立即触发。该单元测试检查在提供巨大值(1000个月)后,测试是否不会在250毫秒时间窗口内触发。

'test long wait should not fire immediately': function(assert) {
    assert.expect(1);
    var count = 0;
    var d = new Date().getTime() + 31 * 86400 * 1000;
    var job = cron.job(new Date(d), function() {
      assert.ok(false);
    });
    job.start();
    setTimeout(function() {
      job.stop();
      assert.ok(true);
      assert.done();
    }, 250);
},

答案 1 :(得分:1)

agenda也将满足您的需求。它将计划作业时间存储在数据库中,然后以给定的时间间隔(agenda.processEvery)轮询数据库,以查找需要完成的作业。

完全披露,我是议程的作者。