From 34ac668d569d18812858c90d7f3a9993d9e5a008 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Wed, 7 Feb 2018 01:21:29 +0100 Subject: [PATCH] Get avg_time directly instead of carrying it around. --- tcllib/servervote.py | 3 ++- tcllib/tclcheck.py | 9 ++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tcllib/servervote.py b/tcllib/servervote.py index 816d753..8755cb9 100644 --- a/tcllib/servervote.py +++ b/tcllib/servervote.py @@ -57,8 +57,9 @@ class ServerVoteMixin: """Return average connection time.""" return self.check_time_sum / self.check_time_count - def master_server_vote_on_time(self, last_duration, avg_duration): + def master_server_vote_on_time(self, last_duration): """Change weight of a server based on average connection time.""" + avg_duration = self.check_time_avg() if last_duration < avg_duration - 0.5: self.master_server_upvote() elif last_duration > avg_duration + 0.5: diff --git a/tcllib/tclcheck.py b/tcllib/tclcheck.py index 0bd2987..68afdf6 100644 --- a/tcllib/tclcheck.py +++ b/tcllib/tclcheck.py @@ -61,16 +61,15 @@ class TclCheckMixin: reqtime_start = time.perf_counter() req = self.sess.get(url, params=params, timeout=timeout) reqtime = time.perf_counter() - reqtime_start - reqtime_avg = self.check_time_avg() self.check_time_add(reqtime) last_response = req if req.status_code == 200: - self.master_server_vote_on_time(reqtime, reqtime_avg) + self.master_server_vote_on_time(reqtime) req.encoding = "utf-8" # Force encoding as server doesn't give one self.write_dump(req.text) return req.text elif req.status_code not in [500, 502, 503]: - self.do_check_errorhandle(req, reqtime, reqtime_avg) + self.do_check_errorhandle(req, reqtime) except requests.exceptions.Timeout: pass # Something went wrong, try a different server @@ -79,13 +78,13 @@ class TclCheckMixin: url = self.prep_check_url(https) raise requests.exceptions.RetryError("Max tries ({}) reached.".format(max_tries), response=last_response) - def do_check_errorhandle(self, req, reqtime, reqtime_avg): + def do_check_errorhandle(self, req, reqtime): """Handle non-HTTP 200 results for ``do_check``.""" errcodes = defaultdict(lambda: "HTTP {}.".format(req.status_code)) errcodes[204] = "No update available." errcodes[404] = "No data for requested CUREF/FV combination." if req.status_code in [204, 404]: - self.master_server_vote_on_time(reqtime, reqtime_avg) + self.master_server_vote_on_time(reqtime) elif req.status_code not in [500, 502, 503]: self.master_server_downvote() req.raise_for_status()