在设定的时间通过CRON运行Node JS应用程序,或者使用CRON本身运行24/7节点应用程序是否更有效?

时间:2016-08-08 14:41:25

标签: node.js cron

在设定的时间通过CRON运行Node JS应用程序,或者使用调度程序本身运行24/7节点应用程序是否更有效?

选项A:

  • CRON每日流程的工作 - 每天调用NodeJS App
  • 每周进程的CRON作业 - 每周调用一次NodeJS App
  • 优点是应用程序仅在需要时运行。
  • 缺点是开销和组织。您需要为每个不同的操作分别设置项目/脚本。

选项B:

  • 分开运行24/7的NodeJS应用程序。
  • 每天调用它的每日操作,每周操作一次,等等。
  • 优势:一个包含所有CRON规则的项目 - 易于添加更多任务
  • 缺点:项目必须全天候运行,不需要时会增加开销。

1 个答案:

答案 0 :(得分:2)

如果您只查看每日和每周频率,我会选择一个称为NodeJS应用的CRON作业。如果该任务在5分钟内运行,那么在这几分钟内您将只拥有CPU和RAM利用率,而不是让整个NodeJS应用程序保持在内存中并且整天使用CPU资源(尽管很少)。

您不需要两个目录;您只能有一个目录,其中包含daily.js作业文件和weekly.js文件。或者您甚至可以拥有1个单个文件(index.js)并使用参数调用它来触发每日或每周作业。 在index.js中,您需要读取process.argv数组以读取传入的参数。

index.js代码如下所示:

if (process.argv[2] == "D") {

  //code for daily task

} else if (process.argv[2] == "W") {

  //code for weekly task

} else {

  throw new Error("Invalid argument");

}

你的crontab文件看起来像这样(例如每天早上3点运行日常工作,周一早上6点运行每周工作):

0 3 * * * node /path/index.js D
0 6 * * 1 node /path/index.js W