feat(worker): start.sh 支持 web/worker/all 三种运行模式,多 pid 文件 + 条件加载 .smssend

This commit is contained in:
yumoqing 2026-08-18 17:15:22 +08:00
parent f59e6f3c45
commit 2cb864940c

View File

@ -3,17 +3,30 @@ set -e
WORKDIR="$(cd "$(dirname "$0")" && pwd)"
cd "$WORKDIR"
if [ -f pipeline.pid ]; then
pid=$(cat pipeline.pid)
# 加载本机敏感环境变量(如短信密钥),不存在则跳过(该文件不入库)
[ -f .smssend ] && source .smssend
# 运行模式all(默认HTTP+poller) / web(仅HTTP无poller) / worker(仅poller分布式worker节点)
MODE="${1:-all}"
case "$MODE" in
web) PORT=9090; PIDFILE="pipeline-web.pid"; PIPELINE_MODE=web ;;
worker) PORT=9091; PIDFILE="pipeline-worker.pid"; PIPELINE_MODE=worker ;;
all) PORT=9090; PIDFILE="pipeline.pid"; PIPELINE_MODE=all ;;
*) echo "用法: $0 [web|worker|all]"; exit 1 ;;
esac
export PIPELINE_MODE
if [ -f "$PIDFILE" ]; then
pid=$(cat "$PIDFILE")
if kill -0 "$pid" 2>/dev/null; then
echo "Already running (PID $pid)"
exit 0
fi
rm -f pipeline.pid
rm -f "$PIDFILE"
fi
echo "Starting pipeline-app on port 9090..."
echo "Starting pipeline-app ($MODE mode) on port $PORT..."
export PATH="$WORKDIR/bin:$PATH"
$WORKDIR/py3/bin/python $WORKDIR/app/pipeline_app.py -p 9090 -w $WORKDIR >> $WORKDIR/logs/pipeline.log 2>&1 &
echo $! > pipeline.pid
echo "Started PID $(cat pipeline.pid)"
$WORKDIR/py3/bin/python $WORKDIR/app/pipeline_app.py -p $PORT -w $WORKDIR >> $WORKDIR/logs/pipeline.log 2>&1 &
echo $! > "$PIDFILE"
echo "Started PID $(cat $PIDFILE)"