Я пытаюсь загрузить файлы ~ 3k (по 1 килобайт каждый) в boto с помощью GreenPool.boto - slow set_content_from_file, когда get_bucket validate is False
Мой вопрос:
Почему get_bucket()
вызов занимает так много времени на вызов, что вызывает компромисс с set_content()
времени? и как я могу обойти это. Благодаря!
Подробнее:
get_bucket(validate=True)
занимает 30 секунд, в среднем, и следующийset_content_from_file_name
занимает менее 1 сек.Я попытался изменить к
validate=False
, это удалось сократитьget_bucket()
время менее 1 сек, но тогда время дляset_content_from_file_name
подскочила до ~ 30 секунд. Я не мог найти причину этого компромисса в boto docs. не
Код:
def upload(bucket_str, key_str, file_path):
# new s3 connection
s3 = boto.connect_s3()
# get bucket
bucket_time = time.time()
b = s3.get_bucket (bucket_name, validate=True)
logging.info('get_bucket Took %f seconds'%(time.time()-bucket_time))
# get key
key_time = time.time()
key = mapping_bucket.new_key(key_str)
logging.info('new_key Took %f seconds'%(time.time()-key_time))
for i in range(S3_TRIES):
try:
up_time = time.time()
key.set_contents_from_filename (file_path,
headers={
"Content-Encoding": "gzip",
"Content-Type": "application/json",
},
policy='public-read')
logging.info('set_content Took %f seconds'%(time.time()-up_time))
key.set_acl('public-read')
return True
except Exception as e:
logging.info('try_set_content exception iteration - %d, %s'%(i, str(e)))
_e = e
raise _e