From 661941dbf17c96241fb9674cdc6adcf15607f90d Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 26 Jan 2024 16:35:14 -0400 Subject: [PATCH] feat: Split datatracker/celery start scripts (#6974) --- dev/build/celery-start.sh | 22 ++++++++++++++++++++++ dev/build/datatracker-start.sh | 10 ++++++++++ dev/build/start.sh | 28 +++++++++++++++++++--------- 3 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 dev/build/celery-start.sh create mode 100644 dev/build/datatracker-start.sh diff --git a/dev/build/celery-start.sh b/dev/build/celery-start.sh new file mode 100644 index 000000000..c229defa2 --- /dev/null +++ b/dev/build/celery-start.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# +# Run a celery worker +# +echo "Running Datatracker checks..." +./ietf/manage.py check + +cleanup () { + # Cleanly terminate the celery app by sending it a TERM, then waiting for it to exit. + if [[ -n "${celery_pid}" ]]; then + echo "Gracefully terminating celery worker. This may take a few minutes if tasks are in progress..." + kill -TERM "${celery_pid}" + wait "${celery_pid}" + fi +} + +trap 'trap "" TERM; cleanup' TERM + +# start celery in the background so we can trap the TERM signal +celery "$@" & +celery_pid=$! +wait "${celery_pid}" diff --git a/dev/build/datatracker-start.sh b/dev/build/datatracker-start.sh new file mode 100644 index 000000000..ef64ca7b3 --- /dev/null +++ b/dev/build/datatracker-start.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo "Running Datatracker checks..." +./ietf/manage.py check + +echo "Running Datatracker migrations..." +./ietf/manage.py migrate --settings=settings_local + +echo "Starting Datatracker..." +./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local diff --git a/dev/build/start.sh b/dev/build/start.sh index ef64ca7b3..f20d264be 100644 --- a/dev/build/start.sh +++ b/dev/build/start.sh @@ -1,10 +1,20 @@ #!/bin/bash - -echo "Running Datatracker checks..." -./ietf/manage.py check - -echo "Running Datatracker migrations..." -./ietf/manage.py migrate --settings=settings_local - -echo "Starting Datatracker..." -./ietf/manage.py runserver 0.0.0.0:8000 --settings=settings_local +# +# Environment config: +# +# CONTAINER_ROLE - datatracker, celery, or beat (defaults to datatracker) +# +case "${CONTAINER_ROLE:-datatracker}" in + datatracker) + exec ./datatracker-start.sh + ;; + celery) + exec ./celery-start.sh --app=ietf worker + ;; + beat) + exec ./celery-start.sh --app=ietf beat + ;; + *) + echo "Unknown role '${CONTAINER_ROLE}'" + exit 255 +esac