| #!/usr/bin/env bash |
|
|
| set -euo pipefail |
|
|
| PORT="${PORT:-7860}" |
| PIDS=() |
|
|
| cleanup() { |
| echo "[startup] Stopping all services..." |
| for pid in "${PIDS[@]:-}"; do |
| if kill -0 "$pid" >/dev/null 2>&1; then |
| kill "$pid" >/dev/null 2>&1 || true |
| fi |
| done |
| wait || true |
| } |
|
|
| trap cleanup EXIT INT TERM |
|
|
| echo "[startup] Launching AgentSociety services" |
| echo "[startup] Backend on :$PORT" |
|
|
| cd /app/backend |
| uvicorn app.main:app --host 0.0.0.0 --port "$PORT" & |
| PIDS+=("$!") |
|
|
| celery -A app.tasks worker --loglevel=info --pool=solo & |
| PIDS+=("$!") |
|
|
| cd /app |
| python simulation/simulation_worker.py & |
| PIDS+=("$!") |
|
|
| echo "[startup] Services started. PIDs: ${PIDS[*]}" |
|
|
| |
| wait -n "${PIDS[@]}" |
| echo "[startup] A service exited unexpectedly." |
| exit 1 |