Prefer private mirrors, but only if they didn't fail recently. --- urlgrabber/grabber.py | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py index 09ef978..a33e017 100644 --- a/urlgrabber/grabber.py +++ b/urlgrabber/grabber.py @@ -2270,11 +2270,12 @@ def parallel_wait(meter=None): if key in removed: continue # estimate mirror speed - speed = _TH.estimate(key) + speed, fail = _TH.estimate(key) speed /= 1 + host_con.get(key, 0) # order by: least failures, private flag, best speed - private = mirror.get('kwargs', {}).get('private', False) + # ignore 'private' flag if there were failures + private = not fail and mirror.get('kwargs', {}).get('private', False) speed = -failed.get(key, 0), private, speed if best is None or speed > best_speed: best = mirror @@ -2391,12 +2392,12 @@ class _TH: default_speed = default_grabber.opts.default_speed try: speed, fail, ts = _TH.hosts[host] - except KeyError: return default_speed + except KeyError: return default_speed, 0 speed *= 2**-fail k = 2**((ts - time.time()) / default_grabber.opts.half_life) speed = k * speed + (1 - k) * default_speed - return speed + return speed, fail ##################################################################### # TESTING -- 1.7.4.4 _______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel