我使用AWS SDK for PHP以编程方式与DynamoDB进行交互。
我想检测对DynamoDB的请求是否已被限制,以便在短暂延迟后再发出请求。
现在,我的假设是不满足受限制的请求。 Amazon FAQs表示在发生限制时会返回400错误。
所以我目前的逻辑看起来像这样:
for( $i=0; $i<10; $i++ ) {
$response = $dynamodb->get_item($get_item_args);
if( $response->isOK() ) {
break;
} elseif( $i < 9 ) {
sleep(1);
}
}
我想这可行,但它是位哑。特别是,它将重复所有失败的请求,而不仅仅是受限制的请求。如果存在不可解析的错误,我真的不想重复请求。
为了使这更聪明,我想查看针对唯一标识符(即特定错误消息)的限制响应。但对于我的生活,我无法捕捉(或在互联网上找到任何地方)一个样本限制的响应。
补偿限制风险和最大化满足请求可能性的最佳方法是什么?
答案 0 :(得分:2)
事实证明,AWS软件开发工具包将自动重试受限制的请求,直到成功为止。所以我上面的努力是不必要的(因为我使用的是AWS SDK for PHP)。
Handling Errors in Amazon DynamoDB文档页面针对ProvisionedThroughputExceededException错误说明以下内容:
适用于Amazon DynamoDB的AWS开发工具包会自动重试这些请求 收到此例外。所以,您的请求最终成功, 除非请求太大或您的重试队列太大 光洁度。