Skip to content
Snippets Groups Projects
Commit 08512e0d authored by godog's avatar godog
Browse files

Use 'retrying' for backoff

For consistency with ai-scripts, where we moved to 'retrying' since it
has Debian packages.
parent 168c8974
No related branches found
No related tags found
1 merge request!3Use 'retrying' for backoff
Pipeline #16464 passed
import backoff from retrying import retry
import codecs import codecs
import json import json
import random import random
...@@ -149,6 +149,12 @@ def _json_response_decoder(resp): ...@@ -149,6 +149,12 @@ def _json_response_decoder(resp):
return json.load(reader(resp)) return json.load(reader(resp))
def _should_retry_request(exception):
return exception.__class__ in (
urllib3.exceptions.HTTPError,
RetriableStatusError)
class ClientStub(): class ClientStub():
"""Client stub for JSON/RPC services.""" """Client stub for JSON/RPC services."""
...@@ -196,13 +202,10 @@ class ClientStub(): ...@@ -196,13 +202,10 @@ class ClientStub():
else: else:
setattr(self, method, self._method(url)) setattr(self, method, self._method(url))
@backoff.on_exception(backoff.expo, @retry(retry_on_exception=_should_retry_request,
(urllib3.exceptions.HTTPError, wait_exponential_multiplier=100,
RetriableStatusError), wait_exponential_max=DEFAULT_MAX_BACKOFF_INTERVAL * 1000,
base=1.4142, stop_max_delay=DEFAULT_MAX_TIMEOUT * 1000)
factor=0.1,
max_value=DEFAULT_MAX_BACKOFF_INTERVAL,
max_time=DEFAULT_MAX_TIMEOUT)
def _do_single_request(self, parsed_url, targets, request_data, def _do_single_request(self, parsed_url, targets, request_data,
headers, response_decoder, deadline): headers, response_decoder, deadline):
"""Issue a request, retry on temporary errors. """Issue a request, retry on temporary errors.
......
...@@ -11,13 +11,13 @@ setup( ...@@ -11,13 +11,13 @@ setup(
author_email="info@autistici.org", author_email="info@autistici.org",
url="https://git.autistici.org/ai3/tools/python-web-common", url="https://git.autistici.org/ai3/tools/python-web-common",
install_requires=[ install_requires=[
"backoff",
"Flask", "Flask",
"flask-talisman", "flask-talisman",
"opencensus", "opencensus",
"opencensus-ext-zipkin",
"opencensus-ext-flask", "opencensus-ext-flask",
"opencensus-ext-requests", "opencensus-ext-requests",
"opencensus-ext-zipkin",
"retrying",
"sso", "sso",
"urllib3", "urllib3",
"whitenoise", "whitenoise",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment