From 10fca8281663d45c08367f9d5e351c66b670d773 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 23 Sep 2010 10:33:32 -0500 Subject: Give more information about mirror check runs and frequency Show how many times the check has ran in the last 24 hours, as well as the average interval between checks. Signed-off-by: Dan McGee --- mirrors/utils.py | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'mirrors/utils.py') diff --git a/mirrors/utils.py b/mirrors/utils.py index 69909dc..cdb705b 100644 --- a/mirrors/utils.py +++ b/mirrors/utils.py @@ -5,10 +5,11 @@ from .models import MirrorLog, MirrorProtocol, MirrorUrl import datetime +default_cutoff = datetime.timedelta(hours=24) @cache_function(300) -def get_mirror_statuses(): - cutoff_time = datetime.datetime.utcnow() - datetime.timedelta(hours=24) +def get_mirror_statuses(cutoff=default_cutoff): + cutoff_time = datetime.datetime.utcnow() - cutoff protocols = MirrorProtocol.objects.exclude(protocol__iexact='rsync') # I swear, this actually has decent performance... urls = MirrorUrl.objects.select_related('mirror', 'protocol').filter( @@ -41,11 +42,29 @@ def get_mirror_statuses(): else: url.delay = None url.score = None - return urls + + if urls: + last_check = max([u.last_check for u in urls]) + num_checks = max([u.check_count for u in urls]) + check_info = MirrorLog.objects.filter( + check_time__gte=cutoff_time).aggregate( + mn=Min('check_time'), mx=Max('check_time')) + check_frequency = (check_info['mx'] - check_info['mn']) / num_checks + else: + last_check = None + num_checks = 0 + check_frequency = None + + return { + 'last_check': last_check, + 'num_checks': num_checks, + 'check_frequency': check_frequency, + 'urls': urls, + } @cache_function(300) -def get_mirror_errors(): - cutoff_time = datetime.datetime.utcnow() - datetime.timedelta(hours=24) +def get_mirror_errors(cutoff=default_cutoff): + cutoff_time = datetime.datetime.utcnow() - cutoff errors = MirrorLog.objects.filter( is_success=False, check_time__gte=cutoff_time, url__mirror__active=True, url__mirror__public=True).values( -- cgit v1.2.3-24-g4f1b