我试图通过AWS CLI探索一个名为Workspaces的新AWS服务,它似乎有能力满足1个请求/秒。当我尝试同时命中多次时,它会抛出ThrottlingException
错误。由于工作区还没有在boto
包中,所以我通过子进程调用在python中使用CLI。
def describe_workspaces():
process=subprocess.Popen(access_endpoint.split(), stdout=subprocess.PIPE)
output=process.communicate()[0]
所以,如果我调用这个函数>=1/sec,我将有ThrottlingException。怎么处理?并且会有多个用户同时调用此函数。
我想做批处理和异步调用,但如何适应这种架构?
1条答案
按热度按时间n3h0vuf21#
新方案:
您可以使用
Boto3
(Python
中的AWS SDK
)提供的botocore.config
中的Config
来解决此问题,方法是指定重试配置,如以下代码片段所示:参考文献:
旧方案:
您可以使用
Boto3
(Python
中的AWS SDK
)解决此问题,方法是为ThrottlingException
添加异常处理并重试,如下面的代码片段所示:您可以在函数外部创建
AWS client
,并可以根据需要修改逻辑。您也可以通过
AWS CLI
处理ThrottlingException
,但如果您编写一些Bash/Shell
脚本而不是Python
脚本,则会更有意义。对于Python
,建议使用Boto3
。有关更多详细信息,请查看以下内容:AWS Workspaces APIs
通用旧方案:
如果您的代码有多个(不止一个)
AWS client
调用,并且您不想为ThrottlingException
处理添加相同的代码,并且为了实现可重用性而一次又一次地重试每个调用(DRY;不要重复自己)并避免不必要的代码重复,可以使用以下代码片段:下面你可以找到一些关于如何使用它的例子:
测试ThrottlingException处理:
为了测试上述代码片段中的
ThrottlingException
处理,请使用以下代码片段自行引发一个自定义ClientError
: