diff --git a/blender_asset_tracer/pack/shaman/__init__.py b/blender_asset_tracer/pack/shaman/__init__.py index acf24b4..a995115 100644 --- a/blender_asset_tracer/pack/shaman/__init__.py +++ b/blender_asset_tracer/pack/shaman/__init__.py @@ -27,7 +27,9 @@ import requests import blender_asset_tracer.pack as bat_pack import blender_asset_tracer.pack.transfer as bat_transfer -from blender_asset_tracer.pack.shaman.transfer import ShamanTransferrer + +from .transfer import ShamanTransferrer +from .client import ShamanClient log = logging.getLogger(__name__) @@ -55,8 +57,8 @@ class ShamanPacker(bat_pack.Packer): def _get_auth_token(self) -> str: # TODO: get a token from the Flamenco Server. log.warning('Using temporary hack to get auth token from Shaman') - resp = requests.get(urllib.parse.urljoin(self.shaman_endpoint, 'get-token'), - timeout=10) + unauth_shaman = ShamanClient('', self.shaman_endpoint) + resp = unauth_shaman.get('get-token', timeout=10) resp.raise_for_status() return resp.text diff --git a/blender_asset_tracer/pack/shaman/client.py b/blender_asset_tracer/pack/shaman/client.py index bcbe231..9e23d9a 100644 --- a/blender_asset_tracer/pack/shaman/client.py +++ b/blender_asset_tracer/pack/shaman/client.py @@ -20,6 +20,7 @@ import urllib.parse +import urllib3.util.retry import requests.adapters @@ -30,11 +31,17 @@ class ShamanClient: self._auth_token = auth_token self._base_url = base_url - http_adapter = requests.adapters.HTTPAdapter(max_retries=5) + retries = urllib3.util.retry.Retry( + total=10, + backoff_factor=0.05, + ) + http_adapter = requests.adapters.HTTPAdapter(max_retries=retries) self._session = requests.session() self._session.mount('https://', http_adapter) self._session.mount('http://', http_adapter) - self._session.headers['Authorization'] = 'Bearer ' + auth_token + + if auth_token: + self._session.headers['Authorization'] = 'Bearer ' + auth_token def request(self, method: str, url: str, **kwargs) -> requests.Response: kwargs.setdefault('timeout', 300)