Boto按设计将所有请求周期加倍

时间:2013-05-10 23:57:31

标签: python python-2.7 amazon-s3 boto

要使用Boto从S3中获取对象,您必须调用类似的东西(至少这是我能找到的唯一记录方式):

key = bucket.get_key(some_id)
data = key.get_contents_as_string()

但是,get_key执行HEAD,然后get_contents_as_string执行GET。这是非常低效的。我知道我从S3请求的东西几乎总是存在(除了最终的一致性,我的比例几乎是巨大的;数百万:1)。有没有什么方法可以绕过调用get_key的明显boto要求,然后直接跳到“获取与此id相关的数据”?

2 个答案:

答案 0 :(得分:1)

不确定

如果你知道密钥在那里,你可以简单地创建一个Key对象:

key = bucket.new_key(some_id)
data = key.get_contents_as_string()

这将允许您跳过HEAD请求以检查密钥是否存在。当然,如果密钥实际上不存在,则会产生404错误。

答案 1 :(得分:1)

API直接显示用于instantiate a Key object的类。

key = Key(bucket=bucket, name=my_key_id)
data = key.get_contents_as_string()

到目前为止,在我对boto的使用中,我发现文档是一个有用的介绍,但与生成的API文档相比非常不完整。