RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
soa/service/cancel_unfinished_mp_uploads.py
00001 """
00002 Cancels multipart upload that are more that have been 
00003 initiated more than 24h ago.
00004 """
00005 import argparse
00006 from boto.s3.connection import S3Connection
00007 from datetime import datetime, timedelta
00008 
00009 parser = argparse.ArgumentParser()
00010 parser.add_argument("-i", "--id", help="S3 key id", required=True)
00011 parser.add_argument("-k", "--key", help="S3 key", required=True)
00012 args = parser.parse_args()
00013 
00014 conn = S3Connection(args.id, args.key)
00015 now = datetime.now()
00016 for bucket in conn.get_all_buckets():
00017     for mp in bucket.list_multipart_uploads():
00018         initiated = datetime.strptime(mp.initiated[0:-5], "%Y-%m-%dT%H:%M:%S")
00019         expires = initiated + timedelta(days=1)
00020         if expires < now:
00021             print "Canceling upload for {0}/{1}. Expires: {2}" \
00022                 .format(bucket.name, mp.key_name, expires)
00023             try:
00024                 mp.cancel_upload()
00025             except Exception as e:
00026                 print "-" + str(e)
00027         else:
00028             print "Keeping {0}/{1}. Expires: {2}" \
00029                 .format(bucket.name, mp.key_name, expires)
00030 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator