2

したがって、200万を超えるオブジェクトを繰り返し処理しています:-

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

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

100 万番目のオブジェクトで失敗したとします。その時点からこの操作を再開するにはどうすればよいでしょうか。

4

2 に答える 2

9

botoソースを見て、それを理解しました。

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

key.name を marker に渡すと、その時点から操作を再開できます。

于 2011-08-18T12:58:33.200 に答える
-1

markerプロパティを使用してリクエストを再開する例。

これは、サブツリーを再帰的に処理したい場合や、クロールする数百万のオブジェクトがあり、それらを 1 つのリストにまとめたくない場合にも役立ちます。

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
于 2016-12-29T23:08:55.827 に答える