首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boto RequestExpired

Boto RequestExpired
EN

Stack Overflow用户
提问于 2016-06-23 01:47:09
回答 1查看 751关注 0票数 2

在运行长进程时,我一直得到:

代码语言:javascript
复制
...
content_repl/replicate_content.py", line 667, in detach_and_delete
    volumes = ec2_conn.get_all_volumes(volume_ids=volumes_ids)
  File "/usr/lib/python2.7/site-packages/boto/ec2/connection.py", line 2158, in get_all_volumes
    [('item', Volume)], verb='POST')
  File "/usr/lib/python2.7/site-packages/boto/connection.py", line 1186, in get_list
    raise self.ResponseError(response.status, response.reason, body)
boto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>RequestExpired</Code><Message>Request has expired.</Message></Error></Errors><RequestID>xxxxxxxx</RequestID></Response>

注意,许多操作是沿着脚本执行的,没有问题。在脚本的开头,我有:

代码语言:javascript
复制
ec2_conn = boto.ec2.connect_to_region(AWS_REGION,
  aws_access_key_id=assumedRoleObject.credentials.access_key,
  aws_secret_access_key=assumedRoleObject.credentials.secret_key,
  security_token=assumedRoleObject.credentials.session_token,proxy=PROXY,proxy_por=PROXY_PORT)

阅读xxx method and connection pools和Boto文档,我的理解是,Boto应该在内部处理连接,并在需要时获得一个新的连接。对吗?我应该为此添加一个参数吗?自己实现一些重试逻辑?

顺便说一下,我用的是2.40。这个应用程序是单线程的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-27 08:00:20

最后,我发现问题只是与连接对象有关。根据我的测试,assumedRoleObject可以在没有问题的情况下被重用。不过,为了以防万一,我在重新创建连接时也重新创建了该对象。

连接时间为1小时,然后开始失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37980983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档