我正在使用Azure blob SDK python版本。这是删除Blob的方法:
blobs = container_client.list_blobs(name_starts_with="myprefix")
container_client.delete_blobs(*blobs)
如果这里blobs
返回了大量的Blob对象,则上述代码将崩溃。
这里的标准做法是什么?还有其他方法可以批量删除吗?
回复@Ivan Yang: 这与您的解决方案略有不同。我运行了,但是出错了
批处理操作部分失败。
blobs = container_client.list_blobs(name_starts_with="myprefix")
blobs_list = list(blobs)
i in range(0, len(blobs_list), 10):
container_client.delete_blobs(*blobs_list[i: i+10])
答案 0 :(得分:1)
最好使用delete_blobs
方法指定要删除的Blob数。这样调试起来就更容易了。
作为一种解决方法,您可以每次获取一定数量(例如10个blob)的blob,然后删除直到continuation token
为空。
这是示例代码:
#define a continuation token
continuation_token = None
while True:
#fetch 10 blobs each time
blob_list = container_client.list_blobs(name_starts_with="xxx",results_per_page=10).by_page(continuation_token=continuation_token)
list_segment=[blob.name for blob in list(next(blob_list))]
container_client.delete_blobs(*list_segment)
continuation_token = blob_list.continuation_token
if not continuation_token:
break