如何在调用 AWS API 时防止 API 节流?
How to prevent API throttling when invoking AWS API?
我正在使用 AWS API 调用 AWS Step Functions。但是,您可以调用的函数数量是有限制的。
根据 AWS Step Function 限制,some Step Functions API actions are throttled using a token bucket scheme to maintain service bandwidth.
例如,StartExecution()
的桶大小为 100,填充速率为 2/秒。
那么,有没有办法监控存储桶中的可用插槽?
我看了 AWS python API,它叫 boto3
,好像没有办法获取这个信息。但我不确定。
多余的电话会怎样,他们排队了吗?或者只是丢弃?
它们因错误而被拒绝。由于这是一种保护性控制,排队没有任何意义,并且仅仅丢弃过多的请求也不是一个合理的设计实践。
Throttling
The request was denied due to request throttling.
HTTP Status Code: 400
http://docs.aws.amazon.com/step-functions/latest/apireference/CommonErrors.html
您应该能够简单地休眠并重试错误,并采用指数退避。在最简单的形式中,这意味着您休眠 1 秒并重试,然后 2、4、8 等。更好的是,为每个增量添加一个额外的随机间隔,所以 sleep 1 + rand(1) 然后 2 + rand (1) 或沿着这些方向的一些变化。
我正在使用 AWS API 调用 AWS Step Functions。但是,您可以调用的函数数量是有限制的。
根据 AWS Step Function 限制,some Step Functions API actions are throttled using a token bucket scheme to maintain service bandwidth.
例如,StartExecution()
的桶大小为 100,填充速率为 2/秒。
那么,有没有办法监控存储桶中的可用插槽?
我看了 AWS python API,它叫 boto3
,好像没有办法获取这个信息。但我不确定。
多余的电话会怎样,他们排队了吗?或者只是丢弃?
它们因错误而被拒绝。由于这是一种保护性控制,排队没有任何意义,并且仅仅丢弃过多的请求也不是一个合理的设计实践。
Throttling
The request was denied due to request throttling.
HTTP Status Code: 400
http://docs.aws.amazon.com/step-functions/latest/apireference/CommonErrors.html
您应该能够简单地休眠并重试错误,并采用指数退避。在最简单的形式中,这意味着您休眠 1 秒并重试,然后 2、4、8 等。更好的是,为每个增量添加一个额外的随机间隔,所以 sleep 1 + rand(1) 然后 2 + rand (1) 或沿着这些方向的一些变化。