9

我正在使用 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

数据 = 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_headers=response_headers) 文件“/usr/lib/python2.6/site-packages/boto-2.1.1-py2.6.egg/boto/s3/key.py”中,

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

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

第 211 行,在打开的 override_num_retries=override_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,正文中)S3ResponseError: S3ResponseError: 404 Not Found

NoSuchKey指定的键不存在。key_nameidhost_id

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

4

1 回答 1

8

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

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

于 2012-11-28T09:39:55.577 回答