详情页标题前

阿里云对象存储OSSPython异常处理-云淘科技

详情页1

OSS Python SDK异常(OssError)分为三类:ClientError、RequestError和ServerError,这些异常定义在oss2.exceptions子模块中。

异常的变量、类型及描述如下表所示:

变量

类型0

描述

status

int

  • 如果为ServerError异常,则status为HTTP状态码。

  • 如果为ClientError和RequestError异常,则status为固定值。

request_id

str

  • 如果为ServerError异常,则OSS服务器返回请求ID。

  • 如果为ClientError和RequestError异常,则request_id返回的是空字符串。

code和message

str

对应OSS的错误响应格式里的Code和Message两个XML Tag中的文本。

异常处理示例

以下代码展示了下载一个不存在文件时的异常处理,并打印错误信息的HTTP状态码和请求ID。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

try:
    // 填写下载的文件名称,例如exampleobject.txt。
    stream = bucket.get_object('exampleobject.txt')
except oss2.exceptions.NoSuchKey as e:
    print('status={0}, request_id={1}'.format(e.status, e.request_id))            

ClientError

ClientError是由于客户端输入有误引起的。例如,使用bucket.batch_delete_objects方法时,如果收到空的文件列表,会抛出该异常。ClientError的status值是oss2.exceptions.OSS_CLIENT_ERROR_STATUS。

RequestError

当HTTP库抛出异常时,Python SDK会将其转换为RequestError。RequestError的status值是oss2.exceptions.OSS_REQUEST_ERROR_STATUS。

ServerError

当OSS服务器返回HTTP错误码时,Python SDK会将其转换为ServerError。ServerError根据HTTP状态码和OSS错误码派生出多个子类。其中NotFound子类对应所有404异常,Conflict子类对应所有409异常。

下表列出了常见的错误码:

异常类

HTTP状态码

OSS错误码

描述

NotModified

304

使用条件下载时,通过If-Modified-Since参数指定的时间晚于Object实际修改时间。

InvalidArgument

400

InvalidArgument

分片上传时如果指定了x-oss-complete-all:yes,则不允许继续指定body,否则报错。

AccessDenied

403

AccessDenied

没有相应的访问权限。

NoSuchBucket

404

NoSuchBucket

Bucket不存在。

NoSuchKey

404

NoSuchKey

文件不存在。

NoSuchUpload

404

NoSuchUpload

分片上传或者断点续传时,部分分片上传成功,但最终未完成上传。

NoSuchWebsite

404

NoSuchWebsiteConfiguration

Bucket未配置静态网站托管。

NoSuchLifecycle

404

NoSuchLifecycle

Bucket未配置生命周期规则。

NoSuchCors

404

NoSuchCORSConfiguration

Bucket未配置跨域资源共享。

BucketNotEmpty

409

BucketNotEmpty

要删除的Bucket中存在未删除的Object、未完成的分片上传任务或Livechannel。

PositionNotEqualToLength

409

PositionNotEqualToLength

Position的值和当前Object的长度不一致。

ObjectNotAppendable

409

ObjectNotAppendable

当前文件不是Appendable类型。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158616.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSSC快速入门-云淘科技

    本节介绍如何快速使用OSS C SDK完成常见操作,例如创建存储空间、上传文件、下载文件等。 前提条件 已安装OSS C SDK。具体操作,请参见C安装。 创建存储空间 以下代码用于创建存储空间。 #include “oss_api.h” #include “aos_http_io.h” /* yourEndpoint填写Bucket所在地域对应的Endpo…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSS内切圆-云淘科技

    您可以通过内切圆参数,将OSS内存储的图片处理成内切圆。本文介绍对象存储OSS图片处理中的内切圆功能参数及示例。 参数说明 操作名称:circle 相关参数如下: 参数 描述 取值范围 r 指定内切圆的半径。 [1,4096] 注意事项 如果图片的最终格式是PNG、WebP或BMP等支持透明通道的图片,那么图片非圆形区域的部分将会以透明填充。如果图片的最终格…

    2023年12月10日
  • 阿里云对象存储OSS数据湖生态接入-云淘科技

    本文介绍对象存储OSS支持接入的数据湖生态。 生态类型 引擎/平台 参考文档 开源生态 Elasticsearch 将Elasticsearch的快照备份至OSS Flink 使用Flink访问OSS 开源Flink写入OSS-HDFS服务 Fluentd 使用Fluentd访问OSS Flume Flume使用JindoSDK写入OSS-HDFS服务 Ha…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSGo下载到本地文件-云淘科技

    本文介绍如何将存储空间(Bucket)中的文件(Object)下载到本地文件。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。 本文以从环境变量读取访问凭证为例。如何配置访问凭证,请…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSS通过XIHE SQL或者Spark SQL访问OSS数据-云淘科技

    AnalyticDB MySQL湖仓版(3.0)支持通过XIHE SQL和Spark SQL访问OSS数据。本文以基金交易数据处理为例,介绍通过XIHE SQL和Spark SQL访问OSS数据的具体步骤。 前提条件 已开通OSS服务并创建存储空间和目录。具体操作,请参见开通OSS服务、创建存储空间和创建目录。 已创建AnalyticDB MySQL湖仓版(…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。