繁体   English   中英

对AWS(boto3)呼叫使用强度

[英]Using Tenacity With an AWS (boto3) Call

使用boto3调用AWS时遇到间歇性RateLimitExceeded错误。 在下面的示例中,由于速率限制,调用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而不为每个调用建立新功能?

如果创建自己的函数超出范围,那么这是我发现解决此问题的唯一方法。 基本上,当您创建boto3客户端时,您可以向其传递对boto配置中您自己的设置的引用,如下所示:

from botocore.config import Config
config = Config(retries=dict(max_attempts=20))
ec2_client = boto3.client('ec2', config=config)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM