gpt4 book ai didi

amazon-s3 - boto - 从桶中获取键值的更简洁的方法?

转载 作者:行者123 更新时间:2023-12-05 00:27:11 25 4
gpt4 key购买 nike

我试图找出一种简洁的方法来通过 boto 从 s3 获取数据

我当前的代码如下所示。 s3 manager 只是一个为我的应用程序执行所有 s3 设置的类。

    log.debug("generating downloader")
downloader = s3_manager()

log.debug("accessing bucket")
bucket_archive = downloader.s3_buckets['@archive']

log.debug("getting key")
key = bucket_archive.get_key(archive_filename)

log.debug("getting key into string")
source = key.get_contents_as_string()

问题是,查看我的调试日志,我向亚马逊 s3 发出两个请求:
    key = bucket_archive.get_key(archive_filename)
source = key.get_contents_as_string()

查看文档 [ http://boto.readthedocs.org/en/latest/ref/s3.html ] ,似乎对 get_key 的调用检查它是否存在,而第二个调用获取实际数据。有谁知道同时做这两种方法的方法?对于我们的应用程序来说,一种更简洁的方式更适合一个请求。

最佳答案

get_key()方法对对象执行 HEAD 请求以验证它是否存在。如果您确定存储桶和 key 存在并且不希望有 HEAD 请求的开销,您可以直接创建一个 Key 对象。像这样的东西会起作用:

import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket('mybucket', validate=False)
key = bucket.new_key('myexistingkey')
contents = key.get_contents_as_string()
validate=False调用 get_bucket消除了也旨在验证存储桶存在的 GET 请求。

关于amazon-s3 - boto - 从桶中获取键值的更简洁的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21126455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com