如何解决pm2部署nodejs项目时node-schedule这类模块重复执行?

多台服务器,且每台多核,使用pm2部署nodejs项目,其中又使用了node-schedule定时执行某些任务。此时的表现就是每个进程会分别执行一次任务,大家有没有好的解决方案?

目前的做法,使用最后一个 process.pid + 某台服务器固定ip 判断是否需要执行。直觉这样做不靠谱,实际上也产生了问题。

阅读 11.3k
3 个回答

判断process.env.NODE_APP_INSTANCE,多个进程下,每个进程的该值都不同

if (process.env.NODE_APP_INSTANCE === '0') {
 // 定时任务
}

详见pm2文档

个人建议单独用一个fork模式开启的进程来做定时任务,这样就不存在多个了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏