amazon s3 get_key成功后,指定的密钥不存在

yos*_*ssi 9 python web-services amazon-s3 boto amazon-web-services

我正在使用python和boto

这是我的代码:

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

有时(随机出现)我得到这个例外:

S3ResponseError:S3ResponseError:404 Not Found

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

追溯:

回溯(最近一次调用最后一次):文件"/test.py",第222行,在_process_response中

data = 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,body中)S3ResponseError:S3ResponseError:404 Not Found

__CODE__指定的密钥不存在.key_nameidhost_id

所以我得到了钥匙,但是当我尝试从中读取时,我得到了"找不到".任何的想法 ?

小智 8

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

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