From e65fd4d54b76b8169183338e748191e41a4a9271 Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Sat, 7 Jan 2017 16:25:22 +0100 Subject: [PATCH] Fix bugs in connection --- requirements.txt | 2 +- src/sakia/data/connectors/bma.py | 27 +++++++++---------- src/sakia/gui/dialogs/connection_cfg/model.py | 3 +-- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/requirements.txt b/requirements.txt index 29c8678a..75ee25c5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,4 @@ git+https://github.com/hynek/attrs.git@master git+https://github.com/duniter/duniter-python-api.git@dev pytest pytest-asyncio -git+https://github.com/Insoleet/mirage@master \ No newline at end of file +git+https://github.com/Insoleet/mirage@master diff --git a/src/sakia/data/connectors/bma.py b/src/sakia/data/connectors/bma.py index 0a31f128..a0f63c8a 100644 --- a/src/sakia/data/connectors/bma.py +++ b/src/sakia/data/connectors/bma.py @@ -52,20 +52,19 @@ class BmaConnector: :return: The returned data """ endpoints = self.filter_endpoints(request, self._nodes_processor.synced_nodes(currency)) - if len(endpoints) > 0: - tries = 0 - while tries < 3: - endpoint = random.choice(endpoints) - endpoints.remove(endpoint) - try: - self._logger.debug("Requesting {0} on endpoint {1}".format(str(request.__name__), str(endpoint))) - async with aiohttp.ClientSession() as session: - json_data = await request(endpoint.conn_handler(session), **req_args) - return json_data - except (ClientError, ServerDisconnectedError, gaierror, - asyncio.TimeoutError, ValueError, jsonschema.ValidationError) as e: - self._logger.debug(str(e)) - tries += 1 + tries = 0 + while tries < 3 and endpoints: + endpoint = random.choice(endpoints) + endpoints.remove(endpoint) + try: + self._logger.debug("Requesting {0} on endpoint {1}".format(str(request.__name__), str(endpoint))) + async with aiohttp.ClientSession() as session: + json_data = await request(endpoint.conn_handler(session), **req_args) + return json_data + except (ClientError, ServerDisconnectedError, gaierror, + asyncio.TimeoutError, ValueError, jsonschema.ValidationError) as e: + self._logger.debug(str(e)) + tries += 1 raise NoPeerAvailable("", len(endpoints)) async def broadcast(self, currency, request, req_args={}): diff --git a/src/sakia/gui/dialogs/connection_cfg/model.py b/src/sakia/gui/dialogs/connection_cfg/model.py index 04296830..322b1012 100644 --- a/src/sakia/gui/dialogs/connection_cfg/model.py +++ b/src/sakia/gui/dialogs/connection_cfg/model.py @@ -172,8 +172,7 @@ class ConnectionConfigModel(QObject): registered = parser(data) tries += 1 except errors.DuniterError as e: - if e.ucode in (errors.NO_MEMBER_MATCHING_PUB_OR_UID, - e.ucode == errors.NO_MATCHING_IDENTITY): + if e.ucode in (errors.NO_MEMBER_MATCHING_PUB_OR_UID, errors.NO_MATCHING_IDENTITY): tries += 1 else: raise -- GitLab