[英]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.