From 6c7c556770527f6cef8ffc1a8b7fd732b1a3ad7c Mon Sep 17 00:00:00 2001 From: Wieland Hoffmann Date: Sat, 4 Jun 2016 15:44:50 +0200 Subject: [PATCH] Add a subclass of Retry providing linear backoff time Signed-off-by: Wieland Hoffmann --- musicbrainzngs/musicbrainz.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/musicbrainzngs/musicbrainz.py b/musicbrainzngs/musicbrainz.py index 127e937..fb9172b 100644 --- a/musicbrainzngs/musicbrainz.py +++ b/musicbrainzngs/musicbrainz.py @@ -23,9 +23,27 @@ _version = "0.7dev" _log = logging.getLogger("musicbrainzngs") -_retry = Retry(total=8, - status_forcelist=[500, 502, 503], - backoff_factor=0.1) + +class MBRetry(Retry): + """Retry class whose backoff time is:: + + { number of observed errors } * 2.0 + + """ + + def get_backoff_time(self): + """ Formula for computing the current backoff + + :rtype: float + """ + if self._observed_errors <= 1: + return 0 + + return self._observed_errors * 2.0 + + +_retry = MBRetry(total=8, + status_forcelist=[500, 502, 503]) LUCENE_SPECIAL = r'([+\-&|!(){}\[\]\^"~*?:\\\/])'