回答问题

我正在使用 python 和 boto

这是我的代码:

key = bucket.get_key(key_name)
if not key:
    print 'error, key does not exist'
    return
data = key.get_contents_as_string()

有时(随机出现)我得到这个异常:

S3ResponseError:S3ResponseError:404 未找到

注意:文件由一台服务器上传,然后另一台服务器(位于不同的大陆)立即运行上述代码。

回溯:

Traceback(最近一次调用最后一次):文件“/test.py”,第 222 行,在 _process_response

数据 u003d key.get_contents_as_string() 文件“/usr/lib/python2.6/site-packages/boto-2.1.1-py2.6.egg/boto/s3/key.py”,

第 1201 行,在 get_contents_as_string response_headersu003dresponse_headers) 文件“/usr/lib/python2.6/site-packages/boto-2.1.1-py2.6.egg/boto/s3 /key.py",

第 1093 行,在 get_contents_to_file response_headersu003dresponse_headers) 文件“/usr/lib/python2.6/site-packages/boto-2.1.1-py2.6.egg/boto/s3 /key.py",

第 996 行,在 get_file override_num_retriesu003doverride_num_retries) 文件“/usr/lib/python2.6/site-packages/boto-2.1.1-py2.6.egg/boto/s3 /key.py",

第 211 行,在打开 override_num_retriesu003doverride_num_retries) 文件“/usr/lib/python2.6/site-packages/boto-2.1.1-py2.6.egg/boto/s3/key .py",

第 165 行,在 open_read self.resp.reason, body) S3ResponseError: S3ResponseError: 404 Not Found

NoSuchKey指定的key不存在.key_nameidhost_id

所以我得到了密钥,但是当我尝试从中读取时,我得到“找不到”。任何想法 ?

Answers

这是预期的行为,根据Amazon S3 开发人员指南:

... 但是,有关更改的信息可能不会立即在 Amazon S3 中复制,您可能会观察到以下行为: 进程将新对象写入 Amazon S3 并立即尝试读取它。在完全传播更改之前,Amazon S3 可能会报告“密钥不存在”。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐