X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/adcef9f939b663d88a12d5d3597c3b0184d2579f..2668643b7570db96651466250e7a496184f6ef0a:/sdk/python/arvados/safeapi.py diff --git a/sdk/python/arvados/safeapi.py b/sdk/python/arvados/safeapi.py index 0513c7023f..e9dde19625 100644 --- a/sdk/python/arvados/safeapi.py +++ b/sdk/python/arvados/safeapi.py @@ -15,6 +15,7 @@ import threading from . import api from . import config from . import keep +from . import util class ThreadSafeApiCache(object): """Thread-safe wrapper for an Arvados API client @@ -53,13 +54,18 @@ class ThreadSafeApiCache(object): else: self._api_kwargs = api.normalize_api_kwargs(version, **api_params) self.api_token = self._api_kwargs['token'] + self.request_id = self._api_kwargs.get('request_id') self.local = threading.local() self.keep = keep.KeepClient(api_client=self, **keep_params) def localapi(self): - if 'api' not in self.local.__dict__: - self.local.api = api.api_client(**self._api_kwargs) - return self.local.api + try: + client = self.local.api + except AttributeError: + client = api.api_client(**self._api_kwargs) + client._http._request_id = lambda: self.request_id or util.new_request_id() + self.local.api = client + return client def __getattr__(self, name): # Proxy nonexistent attributes to the thread-local API client.