我正在使用 node-cron用于在 Node.js 应用程序中调度任务的模块。我还想使用核心集群模块在多个进程中运行应用程序。
在多个进程中运行应用程序最终会在每个进程中执行计划任务(例如,如果任务要发送电子邮件,则电子邮件将被发送多次)。
与集群模块一起运行 cron 作业的最佳做法/可能的方法是什么?我是否应该创建一些单独的进程来仅处理 cron 作业并且不接受任何请求。如果是,我该如何以正确的方式做到这一点?
最佳答案
如果使用PM2,
您可以使用 PM2 本身提供的名为 NODE_APP_INSTANCE
的环境变量,它需要 PM2 2.5 或更高版本。
NODE_APP_INSTANCE
环境变量可用于确定进程之间的差异,例如您可能只想在一个进程上运行 cronjob,您可以这样做
if(process.env.NODE_APP_INSTANCE == 0) {
//在这里安排你的cron作业,因为这部分只会为一个集群执行
}
,
因为两个进程不可能有相同的编号。
更多关于 PM2 官方文档 here 的信息.
关于node.js - 如何在使用集群模块的 Node.js 应用程序中运行 Cron Job?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30843605/