首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AWS (boto3)调用的坚韧性

使用AWS (boto3)调用的坚韧性
EN

Stack Overflow用户
提问于 2018-06-22 19:21:52
回答 1查看 338关注 0票数 0

在使用RateLimitExceeded调用AWS时,我遇到了间歇性的boto3错误。在下面的示例中,调用、instance.all()或i.vpc.tags都可能由于速率限制而失败:

代码语言:javascript
复制
 for i in instance.all():
     tags = i.vpc.tags

通常,我在自己的函数中使用坚韧作为修饰器,但是很明显,这个调用是从导入的库中调用的,所以不能这样做。如果它不在for循环中,我可以使用重试函数,如下所示:

代码语言:javascript
复制
r = tenacity.Retrying(
    reraise=True, 
    wait=tenacity.wait_random_exponential(multiplier=1, max=60), 
    stop=tenacity.stop_after_delay(130))

r.call(call_wrapped_in_tenacity())

那么,是否有一种方法可以将这两个调用封装到AWS,而不为每个调用构建一个新的函数,同时又保留重试能力?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-25 19:37:39

如果创建自己的函数超出了范围,那么这里是解决此问题的唯一方法。基本上,当您创建您的boto3客户机时,在boto配置中将它传递给您自己的设置的引用,如下所示:

代码语言:javascript
复制
from botocore.config import Config
config = Config(retries=dict(max_attempts=20))
ec2_client = boto3.client('ec2', config=config)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50994424

复制
相关文章

相似问题

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