mirrors: pylint discovered cleanups

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2011-04-18 15:10:20 -05:00
parent 1e3191ff56
commit 1b91de9435
4 changed files with 30 additions and 27 deletions

View File

@ -13,7 +13,7 @@
from django.db import transaction
from collections import deque
from datetime import datetime, timedelta
from datetime import datetime
import logging
import re
import socket
@ -134,8 +134,8 @@ def __init__(self, work, num_threads=10):
@transaction.commit_on_success
def run(self):
logger.debug("starting threads")
for t in self.threads:
t.start()
for thread in self.threads:
thread.start()
logger.debug("joining on all threads")
self.tasks.join()
logger.debug("processing log entries")

View File

@ -49,6 +49,6 @@ def resolve_mirrors():
mirrorurl.has_ipv4, mirrorurl.has_ipv6)
mirrorurl.save(force_update=True)
except socket.error, e:
logger.warn("error resolving %s: %s", hostname, e)
logger.warn("error resolving %s: %s", mirrorurl.hostname, e)
# vim: set ts=4 sw=4 et:

View File

@ -7,6 +7,25 @@
default_cutoff = datetime.timedelta(hours=24)
def annotate_url(url, delays):
'''Given a MirrorURL object, add a few more attributes to it regarding
status, including completion_pct, delay, and score.'''
url.completion_pct = float(url.success_count) / url.check_count
if url.id in delays:
url_delays = delays[url.id]
url.delay = sum(url_delays, datetime.timedelta()) / len(url_delays)
hours = url.delay.days * 24.0 + url.delay.seconds / 3600.0
if url.completion_pct > 0:
divisor = url.completion_pct
else:
# arbitrary small value
divisor = 0.005
url.score = (hours + url.duration_avg + url.duration_stddev) / divisor
else:
url.delay = None
url.score = None
@cache_function(300)
def get_mirror_statuses(cutoff=default_cutoff):
cutoff_time = datetime.datetime.utcnow() - cutoff
@ -31,8 +50,8 @@ def get_mirror_statuses(cutoff=default_cutoff):
check_time__gte=cutoff_time)
delays = {}
for log in times:
d = log.check_time - log.last_sync
delays.setdefault(log.url_id, []).append(d)
delay = log.check_time - log.last_sync
delays.setdefault(log.url_id, []).append(delay)
if urls:
last_check = max([u.last_check for u in urls])
@ -44,29 +63,14 @@ def get_mirror_statuses(cutoff=default_cutoff):
check_frequency = (check_info['mx'] - check_info['mn']) \
/ (num_checks - 1)
else:
check_frequency = None;
check_frequency = None
else:
last_check = None
num_checks = 0
check_frequency = None
for url in urls:
url.completion_pct = float(url.success_count) / url.check_count
if url.id in delays:
url_delays = delays[url.id]
d = sum(url_delays, datetime.timedelta()) / len(url_delays)
url.delay = d
hours = d.days * 24.0 + d.seconds / 3600.0
if url.completion_pct > 0:
divisor = url.completion_pct
else:
# arbitrary small value
divisor = 0.005
url.score = (hours + url.duration_avg + url.duration_stddev) / divisor
else:
url.delay = None
url.score = None
annotate_url(url, delays)
return {
'cutoff': cutoff,

View File

@ -1,6 +1,5 @@
from django import forms
from django.core.serializers.json import DjangoJSONEncoder
from django.db.models import Avg, Count, Max, Min, StdDev
from django.db.models import Q
from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404
@ -96,11 +95,11 @@ def find_mirrors(request, countries=None, protocols=None, use_status=False,
mimetype='text/plain')
def mirrors(request):
mirrors = Mirror.objects.select_related().order_by('tier', 'country')
mirror_list = Mirror.objects.select_related().order_by('tier', 'country')
if not request.user.is_authenticated():
mirrors = mirrors.filter(public=True, active=True)
mirror_list = mirror_list.filter(public=True, active=True)
return direct_to_template(request, 'mirrors/mirrors.html',
{'mirror_list': mirrors})
{'mirror_list': mirror_list})
def mirror_details(request, name):
mirror = get_object_or_404(Mirror, name=name)