From 0ce1b66b0f889974dfd54031a13829f629699b63 Mon Sep 17 00:00:00 2001 From: Samuel Krieg Date: Mon, 27 Aug 2018 13:32:31 +0200 Subject: [PATCH] Client now times out when no response from server This commit resolves #4. It forces the client to time out when the server is unreachable instead of looping endlessly. The new `timeout` and `max_retries` values have been set arbitrarily but can be changed by the user if needed. --- pycontrail/client.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pycontrail/client.py b/pycontrail/client.py index d94992a..4013454 100644 --- a/pycontrail/client.py +++ b/pycontrail/client.py @@ -70,10 +70,13 @@ class Client(object): POOL_MAXSIZE = 100 def __init__(self, url='http://localhost:8082/', - blocking=True, headers=None, auth_params=None): + blocking=True, headers=None, auth_params=None, + timeout=31, max_retries=3): self.api_url = url self._auth_params = auth_params self._headers = headers or Client._DEFAULT_HEADERS + self._max_retries = max_retries + self._timeout = timeout self._obj_serializer = self._obj_serializer_diff if hasattr(pycontrail.gen.vnc_api_client_gen, 'all_resource_types'): @@ -172,6 +175,7 @@ def _http_get(self, url, headers=None, query_params=None): pformat(url), pformat(headers), pformat(query_params)) response = None response = self._api_server_session.get(url, headers=headers, + timeout=self._timeout, params=query_params) logger.debug('GET Response %s %s', pformat(response.status_code), pformat(response.text)) @@ -227,6 +231,8 @@ def _request(self, op, url, data=None, blocking=True, retry_after_auth=False): raise retried += 1 + if retried >= self._max_retries: + raise time.sleep(1) self._create_api_server_session() continue