fix: 修复服务方式
This commit is contained in:
@@ -4,6 +4,8 @@ WS_GATEWAY_HOST=0.0.0.0
|
|||||||
WS_GATEWAY_PORT=8010
|
WS_GATEWAY_PORT=8010
|
||||||
WORKER_BASE_URL=http://127.0.0.1:8000
|
WORKER_BASE_URL=http://127.0.0.1:8000
|
||||||
WS_POLL_INTERVAL_SEC=1.0
|
WS_POLL_INTERVAL_SEC=1.0
|
||||||
|
DISPATCH_WS_URL=ws://127.0.0.1:8060/ws/edge/edge-a4000-01
|
||||||
|
EDGE_POLL_INTERVAL_SEC=1.0
|
||||||
EDGE_DISPATCH_HOST=0.0.0.0
|
EDGE_DISPATCH_HOST=0.0.0.0
|
||||||
EDGE_DISPATCH_PORT=8020
|
EDGE_DISPATCH_PORT=8020
|
||||||
EDGE_MAX_DISPATCH_RECORDS=2000
|
EDGE_MAX_DISPATCH_RECORDS=2000
|
||||||
|
|||||||
@@ -69,6 +69,13 @@ cd video_worker
|
|||||||
bash scripts/run_server.sh
|
bash scripts/run_server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
边缘设备一键接入(仅上游下发,边缘主动连中心):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd video_worker
|
||||||
|
bash scripts/start_edge_device_local.sh
|
||||||
|
```
|
||||||
|
|
||||||
独立 WS 网关服务(远程推荐):
|
独立 WS 网关服务(远程推荐):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
84
video_worker/scripts/start_edge_device_local.sh
Normal file
84
video_worker/scripts/start_edge_device_local.sh
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
cd "$ROOT_DIR"
|
||||||
|
|
||||||
|
PID_DIR="runtime/pids"
|
||||||
|
LOG_DIR="runtime/logs"
|
||||||
|
WORKER_PID_FILE="${PID_DIR}/worker.pid"
|
||||||
|
EDGE_CLIENT_PID_FILE="${PID_DIR}/edge_client.pid"
|
||||||
|
WORKER_LOG="${LOG_DIR}/worker.log"
|
||||||
|
EDGE_CLIENT_LOG="${LOG_DIR}/edge_client.log"
|
||||||
|
|
||||||
|
mkdir -p "$PID_DIR" "$LOG_DIR"
|
||||||
|
|
||||||
|
if [ ! -f .env ]; then
|
||||||
|
cp .env.example .env
|
||||||
|
echo "[INFO] .env missing, created from .env.example"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d .venv ]; then
|
||||||
|
echo "[INFO] .venv missing, running install script"
|
||||||
|
bash scripts/install_wsl_env.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
source .venv/bin/activate
|
||||||
|
set -a
|
||||||
|
source .env
|
||||||
|
set +a
|
||||||
|
|
||||||
|
# Edge device should not expose a public ingress service.
|
||||||
|
APP_HOST="${APP_HOST:-127.0.0.1}"
|
||||||
|
APP_PORT="${APP_PORT:-8000}"
|
||||||
|
DISPATCH_WS_URL="${DISPATCH_WS_URL:-}"
|
||||||
|
WORKER_BASE_URL="${WORKER_BASE_URL:-http://127.0.0.1:${APP_PORT}}"
|
||||||
|
EDGE_POLL_INTERVAL_SEC="${EDGE_POLL_INTERVAL_SEC:-1.0}"
|
||||||
|
|
||||||
|
if [ -z "${DISPATCH_WS_URL}" ]; then
|
||||||
|
echo "[ERROR] DISPATCH_WS_URL is empty"
|
||||||
|
echo "[INFO] set DISPATCH_WS_URL in .env, e.g. ws://<center-host>:8060/ws/edge/<device-id>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
is_running() {
|
||||||
|
local pid_file="$1"
|
||||||
|
if [ ! -f "$pid_file" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
local pid
|
||||||
|
pid="$(cat "$pid_file" 2>/dev/null || true)"
|
||||||
|
if [ -z "$pid" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if kill -0 "$pid" >/dev/null 2>&1; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if is_running "$WORKER_PID_FILE"; then
|
||||||
|
echo "[INFO] worker already running (pid $(cat "$WORKER_PID_FILE"))"
|
||||||
|
else
|
||||||
|
nohup python -m uvicorn app.main:app --host "$APP_HOST" --port "$APP_PORT" >"$WORKER_LOG" 2>&1 &
|
||||||
|
echo $! >"$WORKER_PID_FILE"
|
||||||
|
echo "[OK] worker started (pid $(cat "$WORKER_PID_FILE"))"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if is_running "$EDGE_CLIENT_PID_FILE"; then
|
||||||
|
echo "[INFO] edge client already running (pid $(cat "$EDGE_CLIENT_PID_FILE"))"
|
||||||
|
else
|
||||||
|
nohup env \
|
||||||
|
DISPATCH_WS_URL="$DISPATCH_WS_URL" \
|
||||||
|
WORKER_BASE_URL="$WORKER_BASE_URL" \
|
||||||
|
EDGE_POLL_INTERVAL_SEC="$EDGE_POLL_INTERVAL_SEC" \
|
||||||
|
python scripts/edge_device_client.py >"$EDGE_CLIENT_LOG" 2>&1 &
|
||||||
|
echo $! >"$EDGE_CLIENT_PID_FILE"
|
||||||
|
echo "[OK] edge client started (pid $(cat "$EDGE_CLIENT_PID_FILE"))"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[INFO] worker health: curl http://127.0.0.1:${APP_PORT}/health"
|
||||||
|
echo "[INFO] dispatch ws: ${DISPATCH_WS_URL}"
|
||||||
|
echo "[INFO] worker base url for client: ${WORKER_BASE_URL}"
|
||||||
|
echo "[INFO] worker log: ${WORKER_LOG}"
|
||||||
|
echo "[INFO] edge client log: ${EDGE_CLIENT_LOG}"
|
||||||
Reference in New Issue
Block a user