为CRON作业node.js分配一个进程

时间:2016-08-08 10:25:02

标签: node.js cron

我在Node.js应用程序中完成了集群。我在我的应用程序中有一个cron作业服务,当我将SRV_TYPE = cron环境变量传递给app.js时启动。问题是

我希望只有一个进程会执行我的cron作业。 这是代码shared on gist github

2 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一点。您可以为cron作业运行单独的实例。您只能在master上运行cron作业。

我刚刚为节点cronivo编写了一个小模块,它使用了后来的js和redis来允许cron作业只在集群或多进程中执行一次。只有第一个可用实例才能执行该作业。任何实例都可以执行作业,但只能执行一个。

答案 1 :(得分:0)

一种方式:

// In the master:
for (var i = 0; i < cpuCount; i += 1) {
  cluster.fork({ RUN_CRON : process.env.SRV_TYPE === "cron" && i === 0 });
}

// In the worker:
if (process.env.RUN_CRON === 'true') {
  ...create the scheduler...
}

换句话说:您将环境变量RUN_CRON传递给每个工作人员,如果true设置为SRV_TYPE ,则它将包含字符串cron 它是分叉的第一个工作进程。