Skip to content

Commit f96e3d2

Browse files
committed
Add timeout to Blob.delete()
1 parent 0188210 commit f96e3d2

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

storage/google/cloud/storage/blob.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ def exists(self, client=None, timeout=_DEFAULT_TIMEOUT):
543543
except NotFound:
544544
return False
545545

546-
def delete(self, client=None):
546+
def delete(self, client=None, timeout=_DEFAULT_TIMEOUT):
547547
"""Deletes a blob from Cloud Storage.
548548
549549
If :attr:`user_project` is set on the bucket, bills the API request
@@ -553,12 +553,20 @@ def delete(self, client=None):
553553
``NoneType``
554554
:param client: Optional. The client to use. If not passed, falls back
555555
to the ``client`` stored on the blob's bucket.
556+
:type timeout: float or tuple
557+
:param timeout: (optional) The amount of time, in seconds, to wait
558+
for the server response.
559+
560+
Can also be passed as a tuple (connect_timeout, read_timeout).
561+
See :meth:`requests.Session.request` documentation for details.
556562
557563
:raises: :class:`google.cloud.exceptions.NotFound`
558564
(propagated from
559565
:meth:`google.cloud.storage.bucket.Bucket.delete_blob`).
560566
"""
561-
self.bucket.delete_blob(self.name, client=client, generation=self.generation)
567+
self.bucket.delete_blob(
568+
self.name, client=client, generation=self.generation, timeout=timeout
569+
)
562570

563571
def _get_transport(self, client):
564572
"""Return the client's transport.

storage/tests/unit/test_blob.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,9 @@ def test_delete_wo_generation(self):
676676
bucket._blobs[BLOB_NAME] = 1
677677
blob.delete()
678678
self.assertFalse(blob.exists())
679-
self.assertEqual(bucket._deleted, [(BLOB_NAME, None, None)])
679+
self.assertEqual(
680+
bucket._deleted, [(BLOB_NAME, None, None, self._get_default_timeout())]
681+
)
680682

681683
def test_delete_w_generation(self):
682684
BLOB_NAME = "blob-name"
@@ -687,9 +689,9 @@ def test_delete_w_generation(self):
687689
bucket = _Bucket(client)
688690
blob = self._make_one(BLOB_NAME, bucket=bucket, generation=GENERATION)
689691
bucket._blobs[BLOB_NAME] = 1
690-
blob.delete()
692+
blob.delete(timeout=42)
691693
self.assertFalse(blob.exists())
692-
self.assertEqual(bucket._deleted, [(BLOB_NAME, None, GENERATION)])
694+
self.assertEqual(bucket._deleted, [(BLOB_NAME, None, GENERATION, 42)])
693695

694696
def test__get_transport(self):
695697
client = mock.Mock(spec=[u"_credentials", "_http"])
@@ -3362,9 +3364,9 @@ def __init__(self, client=None, name="name", user_project=None):
33623364
self.path = "/b/" + name
33633365
self.user_project = user_project
33643366

3365-
def delete_blob(self, blob_name, client=None, generation=None):
3367+
def delete_blob(self, blob_name, client=None, generation=None, timeout=None):
33663368
del self._blobs[blob_name]
3367-
self._deleted.append((blob_name, client, generation))
3369+
self._deleted.append((blob_name, client, generation, timeout))
33683370

33693371

33703372
class _Client(object):

0 commit comments

Comments
 (0)