JobData/spider-entrypoint.sh
2026-03-24 01:49:31 +08:00

56 lines
1.5 KiB
Bash

#!/bin/bash
set -e
PLATFORM="${PLATFORM:-boss}"
INSTANCES="${INSTANCES:-1}"
echo "=========================================="
echo " Spider Container"
echo " Platform: ${PLATFORM}"
echo " Instances: ${INSTANCES}"
echo " API: ${API_BASE_URL}"
echo " Delay: ${SLEEP_MIN_SECONDS}-${SLEEP_MAX_SECONDS}s"
echo " Inline Co: ${INLINE_COMPANY}"
echo "=========================================="
# 平台 -> Python 模块映射
case "${PLATFORM}" in
boss) MODULE="spiderJobs.platforms.boss.main" ;;
qcwy) MODULE="spiderJobs.platforms.job51.main" ;;
zhilian) MODULE="spiderJobs.platforms.zhilian.main" ;;
*)
echo "[ERROR] Unknown PLATFORM: ${PLATFORM}"
echo " Supported: boss, qcwy, zhilian"
exit 1
;;
esac
# 启动多个实例(最后一个前台运行)
PIDS=()
for i in $(seq 1 $((INSTANCES - 1))); do
echo "[spider] Starting ${PLATFORM} instance ${i}/${INSTANCES} (background)..."
python -m "${MODULE}" &
PIDS+=($!)
sleep 2 # 错开启动,避免同时抢同一个关键词
done
echo "[spider] Starting ${PLATFORM} instance ${INSTANCES}/${INSTANCES} (foreground)..."
python -m "${MODULE}" &
PIDS+=($!)
# 等待所有子进程,任一退出则全部退出
wait_and_cleanup() {
echo "[spider] Shutting down all instances..."
for pid in "${PIDS[@]}"; do
kill "$pid" 2>/dev/null || true
done
wait
echo "[spider] All instances stopped."
}
trap wait_and_cleanup SIGTERM SIGINT
# 等任意子进程退出
wait -n
wait_and_cleanup