def _get_bucket(self, name, throw=False):
"""
Get the bucket by it's name. Uses cache by default.
:param name: bucket name.
:param throw: If True raises NotFound exception, otherwise, returns
None.
:return: instance of :class:`google.cloud.storage.Bucket` or None.
"""
if not self.cache_buckets:
try:
return self.client.get_bucket(name)
except NotFound:
if throw:
raise
return None
try:
cache = self._bucket_cache
except AttributeError:
self._bucket_cache = cache = {}
try:
return cache[name]
except KeyError:
try:
bucket = self.client.get_bucket(name)
except BrokenPipeError as e:
if e.errno in (None, errno.EPIPE):
return self._get_bucket(name, throw)
else:
raise
except (BadRequest, NotFound):
if throw:
raise
return None
cache[name] = bucket
return bucket
评论列表
文章目录