Use only file offsets and timestamps at the first and last call of PyCurlFileObject._retrieve(). Should help 851178. --- scripts/urlgrabber-ext-down | 11 +++++++---- urlgrabber/grabber.py | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/scripts/urlgrabber-ext-down b/scripts/urlgrabber-ext-down index 3da55a4..3dafb12 100755 --- a/scripts/urlgrabber-ext-down +++ b/scripts/urlgrabber-ext-down @@ -55,18 +55,21 @@ def main(): if opts.progress_obj: opts.progress_obj = ProxyProgress() opts.progress_obj._id = cnt - tm = time.time() + + dlsz = dltm = 0 try: fo = PyCurlFileObject(opts.url, opts.filename, opts) fo._do_grab() fo.fo.close() size = fo._amount_read - dlsz = size - fo._reget_length + if fo._tm_last: + dlsz = fo._tm_last[0] - fo._tm_first[0] + dltm = fo._tm_last[1] - fo._tm_first[1] ug_err = 'OK' except URLGrabError, e: - size = dlsz = 0 + size = 0 ug_err = '%d %s' % e.args - write('%d %d %d %.3f %s\n', opts._id, size, dlsz, time.time() - tm, ug_err) + write('%d %d %d %.3f %s\n', opts._id, size, dlsz, dltm, ug_err) if __name__ == '__main__': main() diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py index 0d67b1f..5df0436 100644 --- a/urlgrabber/grabber.py +++ b/urlgrabber/grabber.py @@ -1126,11 +1126,13 @@ class URLGrabber(object): return filename def retryfunc(opts, url, filename): - tm = time.time() fo = PyCurlFileObject(url, filename, opts) try: fo._do_grab() - _TH.update(url, fo._amount_read - fo._reget_length, time.time() - tm, None) + if fo._tm_last: + dlsz = fo._tm_last[0] - fo._tm_first[0] + dltm = fo._tm_last[1] - fo._tm_first[1] + _TH.update(url, dlsz, dltm, None) if not opts.checkfunc is None: obj = CallbackObject(filename=filename, url=url) _run_callback(opts.checkfunc, obj) @@ -1223,6 +1225,8 @@ class PyCurlFileObject(object): self._error = (None, None) self.size = 0 self._hdr_ended = False + self._tm_first = None + self._tm_last = None self._do_open() @@ -1237,6 +1241,12 @@ class PyCurlFileObject(object): def _retrieve(self, buf): try: + tm = self._amount_read + len(buf), time.time() + if self._tm_first is None: + self._tm_first = tm + else: + self._tm_last = tm + if not self._prog_running: if self.opts.progress_obj: size = self.size + self._reget_length -- 1.7.4.4 _______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel