|
|
|
@ -63,3 +63,35 @@ index 094be77..be85f92 100644
|
|
|
|
|
default_speed = default_grabber.opts.default_speed
|
|
|
|
|
try: speed, fail, ts = _TH.hosts[host]
|
|
|
|
|
except KeyError: return default_speed
|
|
|
|
|
commit fa6a17c29e9dea3ccd2d384039b305f027a5b75e
|
|
|
|
|
Author: Zdeněk Pavlas <zpavlas@redhat.com>
|
|
|
|
|
Date: Mon May 21 09:06:13 2012 +0200
|
|
|
|
|
|
|
|
|
|
timedhosts: sanity check on dl_time
|
|
|
|
|
|
|
|
|
|
- handle the dl_time <= 0 case
|
|
|
|
|
|
|
|
|
|
- relative validity of calculated speed now depends
|
|
|
|
|
on dl_time instead of dl_size. (that's where the
|
|
|
|
|
random error is)
|
|
|
|
|
|
|
|
|
|
diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
|
|
|
|
|
index be85f92..73e14aa 100644
|
|
|
|
|
--- a/urlgrabber/grabber.py
|
|
|
|
|
+++ b/urlgrabber/grabber.py
|
|
|
|
|
@@ -2301,11 +2301,12 @@ class _TH:
|
|
|
|
|
|
|
|
|
|
if ug_err is None:
|
|
|
|
|
# k1: the older, the less useful
|
|
|
|
|
- # k2: if it was <1MiB, don't trust it much
|
|
|
|
|
+ # k2: <500ms readings are less reliable
|
|
|
|
|
# speeds vary, use 10:1 smoothing
|
|
|
|
|
k1 = 2**((ts - now) / default_grabber.opts.half_life)
|
|
|
|
|
- k2 = min(dl_size / 1e6, 1.0) / 10
|
|
|
|
|
- speed = (k1 * speed + k2 * dl_size / dl_time) / (k1 + k2)
|
|
|
|
|
+ k2 = min(dl_time / .500, 1.0) / 10
|
|
|
|
|
+ if k2 > 0:
|
|
|
|
|
+ speed = (k1 * speed + k2 * dl_size / dl_time) / (k1 + k2)
|
|
|
|
|
fail = 0
|
|
|
|
|
elif getattr(ug_err, 'code', None) == 404:
|
|
|
|
|
fail = 0 # alive, at least
|
|
|
|
|