javascript - node.js - cron.js 与 setInterval

标签 javascript node.js npm

我需要每小时或每 30 分钟运行几个脚本,而且我还需要控制它们(重启、停止和启动)。我目前正在使用 cron.js,但是如果我使用 native setInterval,性能会有什么不同吗?而不是使用 cron.js?另外,我能否控制它们?

小脚本可以同时运行数百个,它们修改 mongodb 数据库上的数据。

最佳答案

我强烈建议您使用操作系统的 native crontab(1) 程序。我曾经被 cron.js 的简单所吸引,只是很快意识到它在生产中不是很可靠。

is there any performance difference if I use the native setInterval?

的确如此。由于 Javascript 运行时的性质,setInterval() 不准确,最终会与操作系统的时钟不同步。 cron.js 在幕后使用 setInterval(),但是,他们添加了一个心跳监视器来调整间隔和使用 Date 对象找到的 cpu 时钟之间的增量。如果脚本运行的准确性至关重要,那么这两种方法都不应被视为可靠。

此外,使用 cron.js 可以让您的定时脚本依赖于进程。当然,您可以使用 forever 无限期地保持进程,但如果它在作业执行前几秒钟崩溃,脚本很可能不会作为 运行>forever 重新启动。更不用说,如果机器重新启动,forever 进程将终止,除非计划使用 upstart(1) 启动时重新启动,或者具有讽刺意味的是,crontab(1 )

总结:

crontab(1) 是几十年来企业软件依赖的久经考验的程序。重新发明轮子没有意义 =)

如果像这样在每个脚本的顶部附加一个 SheBang:

#! /usr/bin/env node

并将文件设置为可执行文件,您可以像任何旧 Bash 脚本一样使用 crontab(1) 注册脚本。

关于javascript - node.js - cron.js 与 setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21783506/

相关文章:

javascript - 将对象数组展平为单个数组

javascript - Node 服务器在多次工作后停止工作

java - springboot 应用程序在 Angular 上出现 fsevents 错误

javascript - 使用 Gulp Zip 将所有文件压缩到一个文件夹中

javascript - 如何安装 popper v2?

javascript - 更新搜索结果的计数并根据用户在对象数组中搜索的次数更改选择

javascript - 使用 `document.currentScript.ownerDocument.createElement` 创建的图像(从 <link> 导入的 HTML)永远不会加载

javascript - Firestore 使用数据库/服务器时间进行查询

node.js - 如何使用 NodeJS 创建图表?

javascript - 函数内同名变量改变传递参数的值