Skip to content
Snippets Groups Projects
Commit 6127e692 authored by Roang's avatar Roang
Browse files

Merge branch 'fix/housekeeping_interval' into 'develop'

housekeeping: default interval now 2 minutes but configurable via env

See merge request hub/hub!1141
parents 0f71f7e0 f233f970
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