使用boto3(AWS)上传到Glacier时,如何确保捕获所有可能的异常?

时间:2017-12-20 12:14:32

标签: python amazon-web-services boto3 botocore

我正在编写一个小型python应用程序,可将档案上传到AWS Glacier。在上传过程中,我调用以下方法:

  • client.initiate_multipart_upload()
  • client.upload_multipart_part()
  • client.complete_multipart_upload()

如果连接丢失或请求时间过长,所有这些都有可能引发许多不同的异常。

我正在使用:

 except (botocore.exceptions.EndpointConnectionError, client.exceptions.RequestTimeoutException):

尝试捕捉它们,在一段时间后重试,并在经过一定数量的尝试后放弃,但我仍然有时会得到其他未被捕获的例外。现在我已经改用毯子了

except:

声明,我不是很高兴。我的应用程序在另一个阶段检查AWS账户凭证,保管库名称和与AWS的连接,因此不需要考虑这些。有没有办法可以捕获执行这三种方法时可能发生的所有boto3和botocore异常?

1 个答案:

答案 0 :(得分:2)

botocore.exceptions.BotoCoreError是botocore异常的基本异常类。

boto3.exceptions.Boto3Error是所有boto3异常的基本异常类。

您还应注意botocore.exceptions.ClientErrorbotocore.exceptions.ConnectionClosedError不继承botocore.exceptions.BotoCoreError

来源:

https://github.com/boto/botocore/blob/develop/botocore/exceptions.py https://github.com/boto/boto3/blob/develop/boto3/exceptions.py