在 Node.js 与 Cron 作业中设置间隔?

Posted

技术标签:

【中文标题】在 Node.js 与 Cron 作业中设置间隔?【英文标题】:Set Interval in Node.js vs. Cron Job? 【发布时间】:2013-08-09 20:44:04 【问题描述】:

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

我每分钟都在不断地运行一个函数

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

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

并考虑根据当前时间添加一些其他功能。 - (例如,如果 dateTime = Sunday at noon 则运行函数)

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

现在回想起来,我觉得 CRON 是最好的解决方案。当我可以简单地设置一个 cron 作业以每天运行几秒钟我需要它时,为什么我应该 24/7 运行节点应用程序。 但是 cron 不是 24/7 运行的应用吗?【参考方案2】:

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

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

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

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

【讨论】:

Peter:您是否在与其他东西相同的节点实例上运行 node-cron?我正在考虑做类似的事情,但很好奇启动另一个实例是否是个好主意...... 是的,简单开始,只有一个过程。最初监视、继续运行和调试更容易。随着您的运营能力和流量负载的增加,稍后将其拆分为一个单独的流程,但首先要 KISS。

以上是关于在 Node.js 与 Cron 作业中设置间隔?的主要内容,如果未能解决你的问题,请参考以下文章

在 windows 的 django 中设置一个 cron 作业

如何在 cpanel 中设置 cron 作业

在 Windows 中设置 cron 作业

在 godaddy.com cpanel 中设置 cron 作业

Cron 作业没有获得在 .bashrc 中设置的环境变量

Cron 作业没有获得在 .bashrc 中设置的环境变量