簡體   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