diff --git a/src/core/management/commands/housekeeping.py b/src/core/management/commands/housekeeping.py index 80ce7091fcf2fdd537a88711095b42b8805ce8d0..711fa10c55bc0aca0421d68446198beeabbb1b34 100644 --- a/src/core/management/commands/housekeeping.py +++ b/src/core/management/commands/housekeeping.py @@ -1,5 +1,6 @@ import sys import time +from os import getenv from django.core.management.base import CommandError from django.db.models import Max @@ -18,9 +19,16 @@ def _no_traceback_exception_hook(exc_type, exc_val, traceback): class Command(RichCommand): + DEFAULT_FOREVER_INTERVAL = 120 + def add_arguments(self, parser): parser.add_argument('--forever', action='store_true', help='repeat the housekeeping forever (until Ctrl+C is pressed)') - parser.add_argument('--forever-delay', type=int, default=300, help='seconds to wait between housekeeping runs') + parser.add_argument( + '--forever-interval', + type=int, + default=None, + help='seconds to wait between housekeeping runs (can be set via FOREVER_INTERVAL environment variable, too)', + ) parser.add_argument('--skip-schedule-imports', action='store_true', help="don't do schedule imports") parser.add_argument('--skip-wiki-imports', action='store_true', help="don't import wiki namespaces from upstream") @@ -111,11 +119,11 @@ class Command(RichCommand): 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') + forever_interval = int(options.get('forever_interval') or getenv('FOREVER_INTERVAL') or '0') if forever: - if forever_delay <= 0: - raise CommandError('The --forever-delay value must a positive value (in seconds).') - self.console.print(f'Running housekeeping forever each {forever_delay}s:', end='\n\n') + if forever_interval <= 0: + raise CommandError('The --forever-interval value must a positive value (in seconds).') + self.console.print(f'Running housekeeping forever each {forever_interval}s:', end='\n\n') try: while True: @@ -133,7 +141,7 @@ class Command(RichCommand): if forever: print() # empty line - time.sleep(forever_delay) + time.sleep(forever_interval) else: break except KeyboardInterrupt: