From 9f4c7ac2a7616411b762e59da3a4bba7193aa4dd Mon Sep 17 00:00:00 2001 From: Helge Jung <hej@c3pb.de> Date: Sat, 15 Jul 2023 10:25:31 +0200 Subject: [PATCH] Docker: use housekeeping's integrated forever mode --- deployment/docker/app.sh | 10 +++++----- src/core/management/commands/housekeeping.py | 10 ++++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/deployment/docker/app.sh b/deployment/docker/app.sh index ffc0d480d..0136601a0 100755 --- a/deployment/docker/app.sh +++ b/deployment/docker/app.sh @@ -99,12 +99,12 @@ if [ "$1" == "shell" -o "$1" == "createsuperuser" -o "$1" == "test" ]; then fi if [ "$1" == "housekeeping" ]; then - while true; do - date + interval="${HOUSEKEEPING_SLEEP_SECONDS:-300}" + if [ "$interval" -gt 0 ]; then + python3 $APP_HOME/manage.py housekeeping --forever --forever-delay="$interval" + else python3 $APP_HOME/manage.py housekeeping - sleep "${HOUSEKEEPING_SLEEP_SECONDS:-300}" - echo - done + fi fi if [ "$1" == "build" ]; then diff --git a/src/core/management/commands/housekeeping.py b/src/core/management/commands/housekeeping.py index fddcc4e42..6eb9106ed 100644 --- a/src/core/management/commands/housekeeping.py +++ b/src/core/management/commands/housekeeping.py @@ -1,6 +1,6 @@ import time -from django.core.management.base import BaseCommand +from django.core.management.base import BaseCommand, CommandError from django.utils import timezone from ...models.messages import DirectMessage @@ -63,6 +63,12 @@ class Command(BaseCommand): def handle(self, *args, **options): # call _do_housekeeping repeatedly (unless --forever is not set) forever = options.get('forever') + forever_delay = options.get('forever_delay', '0') + if forever: + if forever_delay <= 0: + raise CommandError('The --forever-delay value must a positive value (in seconds).') + print(f'Running housekeeping forever each {forever_delay}s:', end='\n\n') + while True: if forever: print(timezone.now().isoformat()) @@ -72,7 +78,7 @@ class Command(BaseCommand): if forever: print() # empty line try: - time.sleep(options.get('forever_delay')) + time.sleep(forever_delay) except KeyboardInterrupt: print('Aborted.') break -- GitLab