Skip to content

Instantly share code, notes, and snippets.

@longbai
Created December 26, 2014 08:02
Show Gist options
  • Save longbai/856f22fdab839e573bd9 to your computer and use it in GitHub Desktop.
Save longbai/856f22fdab839e573bd9 to your computer and use it in GitHub Desktop.

Revisions

  1. longbai created this gist Dec 26, 2014.
    66 changes: 66 additions & 0 deletions run.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,66 @@

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-

    import argparse

    import qiniu

    from qiniu.services.storage import bucket as bucketop

    import time

    class DelByPrefix(object):
    """docstring for DelByPrefix"""
    def __init__(self, ak, sk):
    q = qiniu.Auth(ak, sk)
    self.bucket = qiniu.BucketManager(q)

    def run(self, bucket, prefix):
    eof = False
    marker = None
    while not eof:
    ret, eof, info = self.bucket.list(bucket, prefix=prefix,
    marker=marker, limit=1000)
    # print(ret)
    marker = ret.get('marker')
    keys = [stat['key'] for stat in ret.get('items')]
    ops = qiniu.build_batch_delete(bucket, keys)
    # print(ops)
    self.bucket.batch(ops)

    def op_item(bucket, src, i):
    return bucketop._build_op('copy', qiniu.entry(bucket, src), qiniu.entry(bucket, src+str(i)))

    def copy_gen(ak, sk, bucket_name):
    q = qiniu.Auth(ak, sk)
    key = 'copy1'
    data = 'copy test'
    token = q.upload_token(bucket_name, key)
    ret, info = qiniu.put_data(token, key, data)
    print(ret)
    bucket = qiniu.BucketManager(q)
    ops = [op_item(bucket_name, key, i) for i in range(0, 2000)]

    ret, info = bucket.batch(ops)


    def main():
    parser = argparse.ArgumentParser(prog='haikang')

    parser.add_argument('-ak', type=str, help='access key')
    parser.add_argument('-sk', help='secret key')
    parser.add_argument('-bucket', help='bucket name')
    parser.add_argument('-prefix', help='prefix')

    args = parser.parse_args()
    copy_gen(args.ak, args.sk, args.bucket)

    deleter = DelByPrefix(args.ak, args.sk)
    start = time.time()
    deleter.run(args.bucket, args.prefix)
    end = time.time()
    print(end-start)

    if __name__ == '__main__':
    main()