javascript - 工作时间超过 25 天的 Node 的调度程序。

标签 javascript node.js cron

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

如果我需要安排时间,比如每三个月一次...我该如何解决?

最佳答案

查看 node-cron 中的这一行:https://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);
},

关于javascript - 工作时间超过 25 天的 Node 的调度程序。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25326147/

相关文章:

javascript - 使用 javascript 将数据值分配给 href?

javascript - 从源 'file:///sample.txt' 访问位于 'null' 的 XMLHttpRequest 被 CORS 策略 : CORS are only supported for protocol schemes 阻止

javascript - 查找 WebGLBuffer 的长度 (ELEMENT_ARRAY_BUFFER)

node.js - 如何以编程方式登录 Facebook oauth2 api

javascript - 使用socket.io的聊天服务器,消息未附加到列表中

node.js - now.js : "Object has no method" error message when trying to start server. js

bash - 如何删除 "TERM environment variable not set"

cron - 在 cron 表达式中使用月份和星期几

ruby-on-rails - "[fail] Can' t 查找文件 : config/schedule. rb"rails, 每当 gem

node.js - 如何在一定时间内阻止api重复请求