我遇到了Python Azure SDK的问题,并且在Stack Overflow和Msdn论坛中都没有找到任何内容。
我想使用Azure SDK list_blobs()来获取blob列表 - 超过5.000(这是max_result)。
如果我看看SDK本身的代码,那么我会看到以下内容:
def list_blobs(self, container_name, prefix=None, marker=None,
maxresults=None, include=None, delimiter=None):
“标记”的描述为:
marker:
Optional. A string value that identifies the portion of the list
to be returned with the next list operation. The operation returns
a marker value within the response body if the list returned was
not complete. The marker value may then be used in a subsequent
call to request the next set of list items. The marker value is
opaque to the client.
我的问题是我不知道如何使用标记来获得下一组5.000结果。如果我尝试这样的事情:
blobs = blobservice.list_blobs(target_container, prefix= prefix)
print(blobs.marker)
然后标记总是空的,我假设是因为list_blobs()已经从响应中解析了blob。
但如果是这种情况,那么我该如何以有意义的方式实际使用标记呢?
我很抱歉,如果这是一个愚蠢的问题,但这实际上是第一个我找不到答案的问题,即使在广泛搜索之后也是如此。
干杯!
答案 0 :(得分:1)
SDK在名为next_marker
的变量中返回延续令牌。您应该使用它来获取下一组blob。请参阅下面的代码作为示例。在这里,我一次只能从容器中列出100个blob:
from azure import *
from azure.storage import *
blob_service = BlobService(account_name='<accountname>', account_key='<accountkey>')
next_marker = None
while True:
blobs = blob_service.list_blobs('<containername>', maxresults=100, marker=next_marker)
next_marker = blobs.next_marker
print(next_marker)
print(len(blobs))
if next_marker is None:
break
print "done"
P.S。上面的代码在最后一次迭代时抛出异常。不知道为什么。但它应该给你一个想法。