使用 boto3 (AWS) 上传到 Glacier 时,如何确保捕捉到所有可能的异常
How can I be sure to catch all possible exceptions when uploading to Glacier with boto3 (AWS)
我正在编写一个小型 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 异常?
botocore.exceptions.BotoCoreError
是 botocore 异常的基本异常 class。
boto3.exceptions.Boto3Error
是所有 boto3 异常的基本异常 class。
您还应该注意不继承 botocore.exceptions.BotoCoreError
.
的 botocore.exceptions.ClientError
和 botocore.exceptions.ConnectionClosedError
来源:
https://github.com/boto/botocore/blob/develop/botocore/exceptions.py
https://github.com/boto/boto3/blob/develop/boto3/exceptions.py
我正在编写一个小型 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 异常?
botocore.exceptions.BotoCoreError
是 botocore 异常的基本异常 class。
boto3.exceptions.Boto3Error
是所有 boto3 异常的基本异常 class。
您还应该注意不继承 botocore.exceptions.BotoCoreError
.
botocore.exceptions.ClientError
和 botocore.exceptions.ConnectionClosedError
来源:
https://github.com/boto/botocore/blob/develop/botocore/exceptions.py https://github.com/boto/boto3/blob/develop/boto3/exceptions.py