PM2部署的puppeteer脚本任务完成后自动重启方案咨询
实现方案
方案一:脚本内主动退出 + PM2自动重启(最易实现,无需额外工具)
你当前的PM2配置已经开启了autorestart: true,只要在任务结束后主动退出进程,PM2就会自动触发重启,完美适配任务时长不固定的场景。
你只需要修改Bot1.js的逻辑,在任务执行完成(无论成功/失败)后调用process.exit()即可,示例代码如下:
const puppeteer = require('puppeteer'); async function runRandomTask() { let browser; try { browser = await puppeteer.launch(/* 你的puppeteer配置 */); // 你的随机任务执行逻辑 console.log('任务执行成功'); } catch (err) { console.error('任务执行出错', err); } finally { // 先关闭浏览器释放资源 if (browser) await browser.close(); // 主动退出进程,触发PM2自动重启 process.exit(); } } runRandomTask();
该方案完全不需要修改现有PM2配置,也无需引入第三方工具,就能实现每次任务结束后立即重启对应进程的需求。
方案二:PM2配置优化(可选)
你当前的配置写了10段重复的app配置,可通过批量生成简化,同时调整实例数达到你要求的22个节点:
{ "apps": Array.from({length: 11}, (_, index) => ({ "name": `bot-${index+1}`, "script": "Bot1.js", "instances": "2", "autorestart": true, "restart_delay": 1, "exec_mode" : "cluster", "min_uptime": 1000 })) }
新增的min_uptime参数会告知PM2,运行超过1秒的进程退出属于正常行为,不会被判定为异常重启计入错误统计。
内容的提问来源于stack exchange,提问作者Khalil
相关产品推荐
相关产品推荐

