【问题标题】:How can I be sure to catch all possible exceptions when uploading to Glacier with boto3 (AWS)使用 boto3 (AWS) 上传到 Glacier 时,如何确保捕获所有可能的异常
【发布时间】:2017-12-24 21:48:49
【问题描述】:

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

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

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

我正在使用:

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

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

except:

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

【问题讨论】:

    标签: python amazon-web-services boto3 botocore


    【解决方案1】:

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

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

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

    来源:

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

    【讨论】:

    • 非常感谢您!我非常感谢您的帮助
    猜你喜欢
    • 2019-11-16
    • 2017-09-05
    • 2021-08-11
    • 2011-10-12
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 2012-07-12
    • 2013-12-22
    相关资源
    最近更新 更多