我有一个使用PM2在生产环境中运行的puppeteer脚本。当最后一个作业成功或失败时,我需要重新启动它。每个机器人实例是另外22个机器人的集群。我想在它完成的时候重新启动它。
机器人会做很多随机的事情,所以我不能设置cron作业来重新启动它们,因为机器人可以在几秒钟或几分钟内完成。
我对任何其他可以帮助我实现这一点的库都是开放的。
{
"apps": [
{
"name": "bot-1",
"script": "Bot1.js",
"instances": "2",
"autorestart": true,
"restart_delay": 1,
"exec_mode" : "cluster"
},
{
"name": "bot-2",
"script": "Bot1.js",
"instances": "2",
"autorestart": true,
"restart_delay": 1,
"exec_mode" : "cluster"
},
{
"name": "bot-3",
"script": "Bot1.js",
"instances": "2",
"autorestart": true,
"restart_delay": 1,
"exec_mode" : "cluster"
},
{
"name": "bot-4",
"script": "Bot1.js",
"instances": "2",
"autorestart": true,
"restart_delay": 1,
"exec_mode" : "cluster"
},
{
"name": "bot-5",
"script": "Bot1.js",
"instances": "2",
"exec_mode" : "cluster",
"autorestart": true,
"restart_delay": 1,
},{
"name": "bot-6",
"script": "Bot1.js",
"instances": "2",
"autorestart": true,
"restart_delay": 1,
"exec_mode" : "cluster"
},
{
"name": "bot-7",
"script": "Bot1.js",
"instances": "2",
"autorestart": true,
"restart_delay": 1,
"exec_mode" : "cluster"
},
{
"name": "bot-8",
"script": "Bot1.js",
"instances": "2",
"autorestart": true,
"restart_delay": 1,
"exec_mode" : "cluster"
},
{
"name": "bot-9",
"script": "Bot1.js",
"instances": "2",
"autorestart": true,
"restart_delay": 1,
"exec_mode" : "cluster"
},
{
"name": "bot-10",
"script": "Bot1.js",
"instances": "2",
"exec_mode" : "cluster",
"autorestart": true,
"restart_delay": 1
}
]
}发布于 2021-09-08 08:14:11
您可以使用pm2 api (pm2.restart(process, [options], fn))来完成此任务。在你的机器人代码中,你可以实现一个teardown函数,它会重新启动pm2进程。
为了重新启动当前进程,机器人正在运行,您可以将名称作为env variable传递。
https://stackoverflow.com/questions/69099201
复制相似问题