2017-07-14 5 views
2

Ich kann keine Beispiele finden, wie die Batch-Funktionalität des Python Google Cloud Storage verwendet wird. Ich sehe es existiert here.Batch-Anfrage mit Google Cloud Storage Python-Client

Ich würde ein konkretes Beispiel lieben. Nehmen wir an, ich möchte eine Reihe von Blobs mit einem bestimmten Präfix löschen. Ich würde beginnen die Liste der Blobs immer wie folgt

from google.cloud import storage 

storage_client = storage.Client() 
bucket = storage_client.get_bucket('my_bucket_name') 
blobs_to_delete = bucket.list_blobs(prefix="my/prefix/here") 

# how do I delete the blobs in blobs_to_delete in a single batch? 

# bonus: if I have more than 100 blobs to delete, handle the limitation 
#  that a batch can only handle 100 operations 

Antwort

3

TL; DR - einfach alle Anfragen senden Sie innerhalb der batch() context manager (erhältlich in der google-cloud-python Bibliothek)

Versuchen Sie dieses Beispiel:

from google.cloud import storage 

storage_client = storage.Client() 
bucket = storage_client.get_bucket('my_bucket_name') 
# Accumulate the iterated results in a list prior to issuing 
# batch within the context manager 
blobs_to_delete = [blob for blob in bucket.list_blobs(prefix="my/prefix/here")] 

# Use the batch context manager to delete all the blobs  
with storage_client.batch(): 
    for blob in blobs: 
     blob.delete() 

Sie müssen sich nur um die 100 Elemente pro Batch kümmern, wenn Sie die REST-APIs direkt verwenden. Die batch() context manager kümmert sich automatisch um diese Einschränkung und gibt bei Bedarf mehrere Stapelanforderungen aus.

Verwandte Themen