node.js – cron.js与setInterval

我需要每隔一小时或每30分钟运行几个脚本,并且还需要对它们进行控制(重新启动,停止和启动)。 我目前正在使用cron.js,但是如果我使用本机setInterval是否有任何性能差异? 而不是使用cron.js? 另外,我能够控制他们吗?

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

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

是否有任何性能差异,如果我使用本地setInterval?

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

此外,使用cron.js使您的时间脚本依赖于过程。 当然,你可以forever使用这个过程来保持这个过程,但是如果这个过程在作业执行前几秒钟就崩溃了,那么这个脚本就不会forever运行。 更不用说,如果机器重新启动, forever进程将会死亡,除非计划在启动时重新启动upstart(1)或者足够讽刺的是, crontab(1)

概要:

crontab(1)是一个数十年来依靠企业软件进行testing的程序。 没有重新发明轮子=)

如果在每个脚本的顶部添加一个SheBang,如下所示:

 #! /usr/bin/env node 

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