| @@ -3,6 +3,7 @@ | |||||
| from datetime import datetime | from datetime import datetime | ||||
| import random | import random | ||||
| from threading import Lock | from threading import Lock | ||||
| import time | |||||
| import requests | import requests | ||||
| @@ -153,6 +154,7 @@ class EVESwaggerInterface: | |||||
| data = esi.post("/v1/universe/names/", token, data={"ids": [entity_id]}) | data = esi.post("/v1/universe/names/", token, data={"ids": [entity_id]}) | ||||
| data = esi(token).v1.universe.names.post(ids=[entity_id]}) | data = esi(token).v1.universe.names.post(ids=[entity_id]}) | ||||
| """ | """ | ||||
| _RETRY_WAIT = 0.5 | |||||
| def __init__(self, session, logger): | def __init__(self, session, logger): | ||||
| self._session = session | self._session = session | ||||
| @@ -190,9 +192,15 @@ class EVESwaggerInterface: | |||||
| params["datasource"] = self._data_source | params["datasource"] = self._data_source | ||||
| url = self._base_url + query | url = self._base_url + query | ||||
| call = lambda: method(url, params=params, json=data or None, | |||||
| headers=headers, timeout=10) | |||||
| try: | try: | ||||
| resp = method(url, params=params, json=data or None, | |||||
| headers=headers, timeout=10) | |||||
| try: | |||||
| resp = call() | |||||
| except requests.ConnectionError: | |||||
| self._logger.warn("ESI request failed, retrying once") | |||||
| time.sleep(self._RETRY_WAIT) | |||||
| resp = call() | |||||
| resp.raise_for_status() | resp.raise_for_status() | ||||
| result = resp.json() if resp.content else None | result = resp.json() if resp.content else None | ||||
| except (requests.RequestException, ValueError) as exc: | except (requests.RequestException, ValueError) as exc: | ||||