49

我正在学习 node.js,只是设置了一个空的 Linux 虚拟机并安装了节点。

我每分钟都在不断地运行一个功能

var request = require('request')
var minutes = 1, the_interval = minutes * 60 * 1000

setInterval(function() {
    // Run code
  })
}, the_interval);

并考虑根据当前时间添加一些其他功能。- (例如,如果 dateTime = 星期日中午运行函数)

我的问题是,与传统的 cron 作业设置相比,运行这样的设置有什么缺点吗?

请记住,无论如何,我必须每分钟在节点中运行此功能。

4

2 回答 2

39

我的问题是,与传统的 cron 作业设置相比,运行这样的设置有什么缺点吗?

只要//run the code不是像密码学这样受 CPU 限制的东西,就坚持使用 1 个节点进程,至少要开始。由于您需要,request我猜您可能正在发出 HTTP 请求,即 IO,这意味着这会很好。

安装/启动/启动/停止/升级/连接调试器比处理应用程序服务器和单独的 cron 管理进程更简单。就其价值而言,将其保存在 javascript 中使其可跨平台移植,尽管这可能并不重要。

还有一个我用过的方便的node-cron模块以及大约一个 bazillion 其他替代品。

于 2013-08-08T14:34:02.640 回答
25

这取决于您必须遵守该分钟间隔的严格程度以及您的节点脚本在此期间是否正在执行其他任何操作。如果脚本所做的唯一事情是每个 X 运行一些东西,我强烈考虑让您的节点脚本改为执行 X,并使用适当的操作系统调度程序对其进行调度。

如果你在 node 中构建和运行它,你必须管理应用程序的生命周期并确保它正在运行,从崩溃中恢复等。通过 CRON 每分钟执行一次更直接,在我看来更符合Unix哲学

于 2013-08-08T08:11:15.130 回答