Files
douyin-archive/pm2.config.cjs
T

54 lines
1.6 KiB
JavaScript

const path = require("path");
const dotenv = require("dotenv");
const instances = Number.parseInt(process.env.WEB_CONCURRENCY ?? "1", 10) || 1;
const { parsed: envFromFile = {} } = dotenv.config({
path: path.join(__dirname, ".env"),
});
module.exports = {
apps: [
{
name: "DouyinArchive-ASR",
script: "node_modules/tsx/dist/cli.mjs",
args: "scripts/stt-worker.ts",
cwd: __dirname,
instances: 1,
exec_mode: "fork",
autorestart: true,
restart_delay: 4000,
kill_timeout: 10000,
watch: false,
env: { ...envFromFile, NODE_ENV: "production" },
time: true,
},
{
name: "DouyinArchive",
script: "npm",
args: "run start",
cwd: __dirname,
autorestart: true,
restart_delay: 4000,
kill_timeout: 5000,
instances,
exec_mode: instances > 1 ? "cluster" : "fork",
// 注意:不要在生产环境 watch,否则 Next.js 写入 .next 会触发重启风暴,导致 Playwright 进程被提前关闭
watch: false,
ignore_watch: [".next", ".turbo", "generated", "node_modules", ".git"],
env: {
// 明确开发环境可选项(如需)
NODE_ENV: process.env.NODE_ENV || "development",
...envFromFile,
},
env_production: {
// 关键:确保应用进程中的 NODE_ENV=production,从而禁用 Next.js 的开发特性
NODE_ENV: "production",
// 为避免多个实例同时拉起共享浏览器,默认单实例;如需并发,请改为独立浏览器服务
WEB_CONCURRENCY: "1",
...envFromFile,
},
time: true,
},
],
};