重复陷入困境的DynamoDB请求



我使用AWS SDK for PHP与DynamoDB进行编程交互。

我想检测一下对DynamoDB的请求是否被抑制,以便在短时间延迟后可以发出另一个请求。

现在,我是在这样一种假设下操作的,即节流请求没有得到满足。亚马逊常见问题解答表明,当节流发生时,会返回一个400错误。

所以我现在有这样的逻辑:

for( $i=0; $i<10; $i++ ) {
$response = $dynamodb->get_item($get_item_args);
if( $response->isOK() ) {
break;
} elseif( $i < 9 ) {
sleep(1);
}
}

我想这是可行的,但它是一个哑。特别是,它将重复所有失败的请求,而不仅仅是节流请求。如果出现无法解决的错误,我真的不想重复这个请求。

为了让这更智能,我想在一个节流响应中查找一个唯一的标识符(即一个特定的错误消息)。但就我的一生而言,我无法捕捉(或在互联网上任何地方找到)一个样本抑制的反应。

补偿节流风险并最大限度地提高满足请求的可能性的最佳方法是什么?

事实证明,AWS SDK会自动重试节流请求,直到成功。所以我上面的努力是不必要的(因为我使用的是AWS SDK for PHP)。

AmazonDynamoDB文档页面中的处理错误说明ProvisionedThroughputExceededException错误如下:

AmazonDynamoDB的AWS SDK会自动重试接收此异常。所以,你的请求最终成功了,除非请求太大或重试队列太大完成

最新更新