重复受限制的DynamoDB请求

时间:2012-12-07 04:32:24

标签: php amazon-dynamodb throttling

我使用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);
    }
}

我想这可行,但它是哑。特别是,它将重复所有失败的请求,而不仅仅是受限制的请求。如果存在不可解析的错误,我真的不想重复请求。

为了使这更聪明,我想查看针对唯一标识符(即特定错误消息)的限制响应。但对于我的生活,我无法捕捉(或在互联网上找到任何地方)一个样本限制的响应。

补偿限制风险和最大化满足请求可能性的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

事实证明,AWS软件开发工具包将自动重试受限制的请求,直到成功为止。所以我上面的努力是不必要的(因为我使用的是AWS SDK for PHP)。

Handling Errors in Amazon DynamoDB文档页面针对ProvisionedThroughputExceededException错误说明以下内容:

  

适用于Amazon DynamoDB的AWS开发工具包会自动重试这些请求   收到此例外。所以,您的请求最终成功,   除非请求太大或您的重试队列太大   光洁度。