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

How can I be sure to catch all possible exceptions when uploading to Glacier with boto3 (AWS)

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

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

我正在使用:

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

尝试捕获它们,在一段时间后重试,并在尝试一定次数后放弃,但有时我仍然会遇到其他未捕获的异常。现在我已经改用毯子

except:

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

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

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

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

botocore.exceptions.ClientErrorbotocore.exceptions.ConnectionClosedError

来源:

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