【问题标题】:Repeating Throttled DynamoDB Requests重复受限制的 DynamoDB 请求
【发布时间】:2012-11-25 06:27:43
【问题描述】:

我正在使用适用于 PHP 的 AWS 开发工具包以编程方式与 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);
    }
}

我想这可行,但它是一个 bit 愚蠢。特别是,它将重复所有失败的请求,而不仅仅是受限制的请求。如果出现不可解决的错误,我真的不想重复请求。

为了更智能,我想在一个受限制的响应中查看唯一标识符(即特定错误消息)。但就我的一生而言,我无法捕获(或在 Internet 上的任何地方找到)样本限制响应。

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

【问题讨论】:

    标签: php amazon-dynamodb throttling


    【解决方案1】:

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

    Handling Errors in Amazon DynamoDB 文档页面说明 ProvisionedThroughputExceededException 错误如下:

    适用于 Amazon DynamoDB 的 AWS 开发工具包自动重试请求 收到此异常。所以,你的请求最终成功了, 除非请求太大或您的重试队列太大而无法 完成。

    【讨论】:

    • 这也解释了为什么即使我在 AWS 后端观察到节流,我也无法捕获响应中的错误。
    猜你喜欢
    • 2021-08-14
    • 2013-06-03
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2016-11-23
    相关资源
    最近更新 更多