我有一个要求,需要从 GCS 存储桶中的文件夹中删除数百万个对象。 这是我当前的实现。
bucket = self.storage_client.bucket(bucket_name)
blobs = bucket.list_blobs(prefix=folder_name)
for blob in blobs:
blob.delete()
由于对象数量较多,列出并不是正确的方式。需要找到一种方法来做一些多线程的方法。
最佳答案
如果你想删除整个Bucket对象,将Bucket的生命周期设置为0是一种快速删除的方法。
但是当您要删除文件夹时,此方法不适用(这与仅删除整个对象的某些部分相同)。
如果您要删除的文件夹占据了整个 objcet 的大部分,我认为通过生命周期管理删除整个存储桶并使用剩余部分创建新存储桶可能是更快的方法。
编辑)带有-m
标志的gsutil rm命令可以多线程删除。这也可能是一种更快的方法。
关于python - 从 GCS 存储桶中的文件夹中删除数百万个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65696282/