在使用RateLimitExceeded调用AWS时,我遇到了间歇性的boto3错误。在下面的示例中,调用、instance.all()或i.vpc.tags都可能由于速率限制而失败:
for i in instance.all():
tags = i.vpc.tags通常,我在自己的函数中使用坚韧作为修饰器,但是很明显,这个调用是从导入的库中调用的,所以不能这样做。如果它不在for循环中,我可以使用重试函数,如下所示:
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,而不为每个调用构建一个新的函数,同时又保留重试能力?
发布于 2018-06-25 19:37:39
如果创建自己的函数超出了范围,那么这里是解决此问题的唯一方法。基本上,当您创建您的boto3客户机时,在boto配置中将它传递给您自己的设置的引用,如下所示:
from botocore.config import Config
config = Config(retries=dict(max_attempts=20))
ec2_client = boto3.client('ec2', config=config)https://stackoverflow.com/questions/50994424
复制相似问题