node.js - 如何使用 node-schedule 仅在一个实例上运行 cron?

标签 node.js cron scheduled-tasks multiple-instances

我的问题是如何使用 node-schedule 仅在 Node 服务器的两个实例中的一个实例上运行 cron。 目前它在两个实例上运行,但我希望它只在一个实例上执行。 那么如何让集群只运行一次任务呢? 提前致谢。

{
  "apps": [
    {
      "name": "Example",
      "script": "boot/app/app.js",
      "watch": false,
      "exec_mode": "cluster_mode",
      "instances": 2,
      "merge_logs": true,
      "cwd": "/srv/www.example.com/server",
      "env": {
        "NODE_ENV": "development",
        .......
    .......
      }
    }
  ]
}

最佳答案

您可以使用 PM2 本身提供的名为 NODE_APP_INSTANCE 的环境变量,它需要 PM2 2.5。

NODE_APP_INSTANCE 环境变量用于确定进程之间的差异,例如您可能只想在一个进程上运行 cronjob,您可以只检查 process.env.NODE_APP_INSTANCE === 0,因为两个进程永远不会有相同的编号。

有关 PM2 官方文档的更多信息 here .

关于node.js - 如何使用 node-schedule 仅在一个实例上运行 cron?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40422589/

相关文章:

ruby - Cronjob - 无法找到 Mozilla geckodriver

arrays - Powershell-建议:在脚本运行之间比较/存储数据

multithreading - Delphi应用程序中的定期任务

c++ - 任务计划程序 : How to schedule a task to execute at login

javascript - 在 Node 流中找不到 mp3 帧头同步位

javascript - 使用 express js 在套接字 io 上阻止跨源请求

php - 为什么我的 cron 作业不运行这个 php 文件

javascript - 使用ajax从svn服务器获取文件的方法

javascript - Nock 拦截器链接,第二个模拟被忽略

node.js - Node Webkit - writeFileSync 中的编码选项不起作用?