2011-08-18 58 views
2

我遍歷上市了超過200萬級的對象正是如此: -恢復的S3存儲通過博託

conn = boto.connect_s3('xxx','xxx') 
bucket = conn.lookup('bucket_name') 

for key in bucket.list(): 
    somefunction(key.name) 

說它未能在百萬分之一的對象,我將如何去從該點恢復此操作?

回答

8

我通過查看boto源代碼找到了它。

def list(self, prefix='', delimiter='', marker='', headers=None): 

將key.name傳遞給marker將允許您從該點繼續操作。

0

使用屬性重新開始請求的示例。

如果您想通過子樹進行遞歸或者有數以百萬計的對象要爬過並且不希望它們位於單個列表中,這也很有用。

marker = None 
while True: 
    keys = bucket.get_all_keys(marker=marker) 
    last_key = None 

    for k in keys: 
     # TODO Do something with your keys! 
     last_key = k.name 

    if not keys.is_truncated: 
     break 

    marker = last_key