Files
eveAI/scripts/start.sh
Josako 84afc0b2ee - Debugging of redis setup issues
- Debugging of celery startup
- Moved flower to a standard image iso own build
2025-09-02 10:25:17 +02:00

43 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROLE="${ROLE:-web}" # web | worker | beat
PORT="${PORT:-8080}" # web poort (in k8s vaak 8080)
WORKERS="${WORKERS:-1}" # gunicorn workers (web)
WORKER_CLASS="${WORKER_CLASS:-gevent}" # web: gevent|sync
WORKER_CONN="${WORKER_CONN:-100}" # web: --worker-connections
LOGLEVEL="${LOGLEVEL:-info}"
MAX_REQ="${MAX_REQUESTS:-1000}"
MAX_JITTER="${MAX_REQUESTS_JITTER:-100}"
COMPONENT_NAME="${COMPONENT_NAME:-eveai_app}" # component name for dynamic import
case "$ROLE" in
web)
echo "[start] role=web component=$COMPONENT_NAME port=$PORT workers=$WORKERS class=$WORKER_CLASS"
exec gunicorn -w "$WORKERS" -k "$WORKER_CLASS" \
-b "0.0.0.0:${PORT}" --worker-connections "$WORKER_CONN" \
--access-logfile - --error-logfile - --log-level "$LOGLEVEL" \
--graceful-timeout 25 --timeout 30 --keep-alive 5 \
--max-requests "$MAX_REQ" --max-requests-jitter "$MAX_JITTER" \
scripts.run:app
;;
worker)
echo "[start] role=worker component=$COMPONENT_NAME"
CONCURRENCY="${CELERY_CONCURRENCY:-2}"
exec celery -A scripts.run worker \
-Q ${CELERY_QUEUE_NAME} \
--loglevel="${CELERY_LOGLEVEL:-INFO}" \
--concurrency="${CONCURRENCY}" \
--max-tasks-per-child="${CELERY_MAX_TASKS_PER_CHILD:-1000}" \
--prefetch-multiplier="${CELERY_PREFETCH:-1}" -O fair
;;
beat)
echo "[start] role=beat component=$COMPONENT_NAME"
exec celery -A scripts.run beat \
--loglevel="${CELERY_LOGLEVEL:-INFO}"
;;
*)
echo "Unknown ROLE=$ROLE" >&2; exit 1
;;
esac