Use exponential backoff when retrying HTTP connections
This commit is contained in:
parent
44ee553c0a
commit
e9fcdb0191
@ -27,7 +27,9 @@ import requests
|
|||||||
|
|
||||||
import blender_asset_tracer.pack as bat_pack
|
import blender_asset_tracer.pack as bat_pack
|
||||||
import blender_asset_tracer.pack.transfer as bat_transfer
|
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__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -55,8 +57,8 @@ class ShamanPacker(bat_pack.Packer):
|
|||||||
def _get_auth_token(self) -> str:
|
def _get_auth_token(self) -> str:
|
||||||
# TODO: get a token from the Flamenco Server.
|
# TODO: get a token from the Flamenco Server.
|
||||||
log.warning('Using temporary hack to get auth token from Shaman')
|
log.warning('Using temporary hack to get auth token from Shaman')
|
||||||
resp = requests.get(urllib.parse.urljoin(self.shaman_endpoint, 'get-token'),
|
unauth_shaman = ShamanClient('', self.shaman_endpoint)
|
||||||
timeout=10)
|
resp = unauth_shaman.get('get-token', timeout=10)
|
||||||
resp.raise_for_status()
|
resp.raise_for_status()
|
||||||
return resp.text
|
return resp.text
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
|
import urllib3.util.retry
|
||||||
import requests.adapters
|
import requests.adapters
|
||||||
|
|
||||||
|
|
||||||
@ -30,11 +31,17 @@ class ShamanClient:
|
|||||||
self._auth_token = auth_token
|
self._auth_token = auth_token
|
||||||
self._base_url = base_url
|
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 = requests.session()
|
||||||
self._session.mount('https://', http_adapter)
|
self._session.mount('https://', http_adapter)
|
||||||
self._session.mount('http://', 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:
|
def request(self, method: str, url: str, **kwargs) -> requests.Response:
|
||||||
kwargs.setdefault('timeout', 300)
|
kwargs.setdefault('timeout', 300)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user