From b7dd8b9b9584591bc43ef4f90882c401b5fc2831 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 8 Jun 2023 16:13:46 -0300 Subject: [PATCH] chore: Restart celery worker on source changes (#5749) * chore: Restart celery worker on Python source change * chore: Debounce celery restarts, only watch ietf dir --- dev/celery/Dockerfile | 5 ++++- dev/celery/docker-init.sh | 18 ++++++++++++++++-- docker-compose.yml | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/dev/celery/Dockerfile b/dev/celery/Dockerfile index 91f2949a6..12eb15eb8 100644 --- a/dev/celery/Dockerfile +++ b/dev/celery/Dockerfile @@ -17,4 +17,7 @@ COPY requirements.txt /tmp/pip-tmp/ RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt RUN rm -rf /tmp/pip-tmp -ENTRYPOINT [ "/docker-init.sh" ] \ No newline at end of file +# Add watchmedo utility for dev containers +RUN pip3 --disable-pip-version-check --no-cache-dir install watchdog[watchmedo] + +ENTRYPOINT [ "/docker-init.sh" ] diff --git a/dev/celery/docker-init.sh b/dev/celery/docker-init.sh index 79671bba8..4fd1f1294 100755 --- a/dev/celery/docker-init.sh +++ b/dev/celery/docker-init.sh @@ -15,6 +15,8 @@ # # DEBUG_TERM_TIMING - if non-empty, writes debug messages during shutdown after a TERM signal # +# DEV_MODE - if non-empty, restart celery worker on Python file change +# WORKSPACEDIR="/workspace" CELERY_ROLE="${CELERY_ROLE:-worker}" @@ -85,6 +87,18 @@ fi trap 'trap "" TERM; cleanup' TERM # start celery in the background so we can trap the TERM signal -celery --app="${CELERY_APP:-ietf}" "${CELERY_OPTS[@]}" "$@" & -celery_pid=$! +if [[ -n "${DEV_MODE}" ]]; then + watchmedo auto-restart \ + --patterns '*.py' \ + --directory 'ietf' \ + --recursive \ + --debounce-interval 5 \ + -- \ + celery --app="${CELERY_APP:-ietf}" "${CELERY_OPTS[@]}" "$@" & + celery_pid=$! +else + celery --app="${CELERY_APP:-ietf}" "${CELERY_OPTS[@]}" "$@" & + celery_pid=$! +fi + wait "${celery_pid}" diff --git a/docker-compose.yml b/docker-compose.yml index b177ee67e..f8f933527 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -74,6 +74,7 @@ services: CELERY_APP: ietf CELERY_ROLE: worker UPDATE_REQUIREMENTS_FROM: requirements.txt + DEV_MODE: yes command: - '--loglevel=INFO' depends_on: