如何批量删除桶?
这是我尝试过的。
def deleteAllBuckets():
batch = storage_client.batch()
with batch:
for bucket in storage_client.list_buckets():
bucket.delete()
从技术上讲它是有效的,因为存储桶被删除了,但我不相信我发送的是单个批处理请求。看起来我正在为每个存储桶发送一个请求。
将上述代码与 Google Cloud Datastore 中的批处理请求进行比较
def deleteAllEntities():
query = datastore_client.query(kind="Charge")
queryIter = query.fetch()
batch = datastore_client.batch()
with batch:
for entity in queryIter:
batch.delete(entity.key)
您可以看到我正在对批处理对象调用删除方法。使用存储代码,我在存储桶对象上调用 delete。不幸的是,云存储 python API 没有任何示例。
最佳答案
当您使用上下文管理器时,它会自动将请求添加到批处理中,并在退出上下文管理器时执行。
但是,我在您的代码中看到的问题是您在批处理上下文管理器中调用列表桶。我想你想在外面创建桶迭代器。像这样:
def deleteAllBuckets():
buckets_iterator = storage_client.list_buckets()
batch = storage_client.batch()
with batch:
for bucket in buckets_iterator:
bucket.delete()
关于python - 如何批量删除桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49949570/