Skip to content
Snippets Groups Projects
Commit f233f970 authored by HeJ's avatar HeJ
Browse files

housekeeping: default interval now 2 minutes but configurable via env

environment variable 'FOREVER_INTERVAL' can be used to set the value for
--forever-interval (previously: --forever-delay)
parent cd49e881
No related branches found
No related tags found
No related merge requests found
import sys import sys
import time import time
from os import getenv
from django.core.management.base import CommandError from django.core.management.base import CommandError
from django.db.models import Max from django.db.models import Max
...@@ -18,9 +19,16 @@ def _no_traceback_exception_hook(exc_type, exc_val, traceback): ...@@ -18,9 +19,16 @@ def _no_traceback_exception_hook(exc_type, exc_val, traceback):
class Command(RichCommand): class Command(RichCommand):
DEFAULT_FOREVER_INTERVAL = 120
def add_arguments(self, parser): 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', 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-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") parser.add_argument('--skip-wiki-imports', action='store_true', help="don't import wiki namespaces from upstream")
...@@ -111,11 +119,11 @@ class Command(RichCommand): ...@@ -111,11 +119,11 @@ class Command(RichCommand):
def handle(self, *args, **options): def handle(self, *args, **options):
# call _do_housekeeping repeatedly (unless --forever is not set) # call _do_housekeeping repeatedly (unless --forever is not set)
forever = options.get('forever') 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:
if forever_delay <= 0: if forever_interval <= 0:
raise CommandError('The --forever-delay value must a positive value (in seconds).') raise CommandError('The --forever-interval value must a positive value (in seconds).')
self.console.print(f'Running housekeeping forever each {forever_delay}s:', end='\n\n') self.console.print(f'Running housekeeping forever each {forever_interval}s:', end='\n\n')
try: try:
while True: while True:
...@@ -133,7 +141,7 @@ class Command(RichCommand): ...@@ -133,7 +141,7 @@ class Command(RichCommand):
if forever: if forever:
print() # empty line print() # empty line
time.sleep(forever_delay) time.sleep(forever_interval)
else: else:
break break
except KeyboardInterrupt: except KeyboardInterrupt:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment