python - 调用 GetDeployment 操作时发生错误 (ThrottlingException)(达到最大重试次数:4):超出速率
问题描述
随着 AWS CodeDeploy 中部署组数量的增加,BitBucket Pipelines 开始更频繁地失败。
管道失败...
+ python ./_scripts/codedeploy_deploy.py
Failed to deploy application revision.
An error occurred (ThrottlingException) when calling the GetDeployment operation (reached max retries: 4): Rate exceeded
有什么办法可以增加限速前的值或减少发生的机会吗?
AWS 论坛帖子: https ://forums.aws.amazon.com/thread.jspa?messageID=892511
解决方案
不幸的是,没有办法提高速率限制,因为这是由 AWS API 动态配置的。
AWS 支持:
此问题与任何并发部署或任何其他与资源相关的限制无关。这是一个节流问题,无法更改。
同时发起的多个 API 调用在我们的端点处受到限制。每个端点的限制是变化的并且是动态的,因此它没有记录在任何地方。
在这种情况下,同时有多个“GetDeployment”API 调用,因此调用受到限制。
在这种情况下,我们建议在重试之间实现错误重试和指数退避,以便 API 调用不是同时的。
您可以查看下面的链接,该链接解释了如何在我们的代码中实现它。- https://docs.aws.amazon.com/general/latest/gr/api-retries.html
我能够实现指数回退,以降低我们尝试获取部署状态的速率,并增加部署失败前的重试次数。
确保您使用的是支持这个新配置系统的最新版本的 BOTO3 (boto3-1.9.108 botocore-1.12.108) 。
BOTO3 重试配置: https ://github.com/boto/botocore/issues/882#issuecomment-338846339
叉子:https://bitbucket.org/DJRavine/aws-codedeploy-bitbucket-pipelines-python/src/master/ GIST : https ://gist.github.com/djravine/5007e2a7f726cebe14ea51c7ee54bf5d
管道成功...
+ python ./_scripts/codedeploy_deploy.py
Deployment Created (Exponential back off 30s)
Deployment InProgress (Exponential back off 60s)
Deployment Succeeded
注意:当我根据我们的部署修改使用时,我将使用更多信息更新这篇文章。
推荐阅读
- python - 从外部访问托管在 Azure VM(Windows 操作系统)上的 python 应用程序
- javascript - 如何在站点和json文件中添加应删除的删除按钮
- java - java 8中的.net列表分组?
- c# - 为什么在使用 Xamarin 表单打开画廊时调用 OnDisappearing() 方法
- grep - 如何从 grep 中排除一些匹配项?
- php - DDD / CQRS / ES - 如何以及在何处实施警卫
- sap-data-dictionary - SM30 错误 不允许更改存储库或跨客户端自定义
- drupal - 从 drupal8 webforms 下载 s3bucket 中的私有文件
- excel - excel使用另一个单元格中的地址将单元格复制/粘贴到单元格
- angular - 单击汉堡按钮时无法打开侧边栏