簡體   English   中英

使用 PM2 時如何僅在一個實例中運行代碼?

[英]How to run code just in one instance when using PM2?

我使用 PM2 來控制和管理 node.js 進程。 使用 PM2,我可以同時運行應用程序的多個實例。 問題是,如果您只需要執行一次特定代碼(任務),則該代碼將在每個實例中相應地執行。 我想知道我是否可以將某個代碼的執行限制為 1 個實例? 有沒有辦法做到這一點? 謝謝!

您可以使用 NODE_APP_INSTANCE 環境變量來執行此操作: https://pm2.keymetrics.io/docs/usage/environment/#node_app_instance-pm2-25-minimum

然后在您的 NodeJS 腳本中,您可以進行以下檢查:

 // Run script only on first PM2 instance if (process.env.NODE_APP_INSTANCE === '0') { foo(); }

問候

恐怕用 pm2 開箱即用是不可能的。 您需要實現某種信號量來跟蹤正在運行的實例計數。 或者從主腳本中獲取您需要運行一次的部分代碼並使用調度程序運行它。

也許這個庫可以幫助你https://github.com/Tomas2D/pm2-master-process

用法很簡單:

import { isMasterInstance } from 'pm2-master-process'

if (await isMasterInstance()) {
  console.info(`I am master!`)
} else {
  console.info(`I am a slave.`)
}

PS:我是圖書館的作者

您的問題本來可以更清晰和更具描述性。 它有點混亂。

不過,您可以參考此備忘單了解最常用的pm2命令。 也許它對您正在搜索的內容有直接的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM