简介
Python SDK 操作成功会返回一个 dict 或者 None。若调用 SDK 接口请求 COS Vectors 服务失败,系统将抛出 CosClientError(客户端异常)或者 CosServiceError (服务端异常)。
CosClientError 是由于客户端无法和 COS Vectors 服务端正常进行交互所引起。如客户端无法连接到服务端,无法解析服务端返回的数据等。
CosServiceError 是客户端和 COS Vectors 服务端交互正常,但操作 COS Vectors 资源失败。如客户端访问一个不存在的向量存储桶,删除一个不存在的索引,没有权限进行某个操作等。
客户端异常
CosClientError 一般指如 timeout 引起的客户端错误,用户捕获后可以选择重试或其它操作。
服务端异常
CosServiceError 提供服务端返回的具体信息,包含了服务端返回的状态码、request_id 和出错明细等。捕获异常后,建议对整个异常进行打印,异常包含了必须的排查因素。以下是异常成员变量的描述以及异常捕获示例。
异常捕获示例
# -*- coding=utf-8import sysimport osfrom pprint import pprintfrom qcloud_cos import CosServiceErrorfrom qcloud_cos import CosConfigfrom qcloud_cos import CosVectorsClientimport logging# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息logging.basicConfig(level=logging.INFO, stream=sys.stdout)# 1. 设置用户属性, 包括 secret_id, secret_key, region 等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成secret_id = os.getenv("COS_VECTORS_SECRET_ID") # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140secret_key = os.getenv("COS_VECTORS_SECRET_KEY") # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140region = 'ap-guangzhou' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos/bucket# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048scheme = 'http' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填config = CosConfig(Region=region,SecretId=secret_id,SecretKey=secret_key,Scheme=scheme,Domain="vectors.ap-guangzhou.coslake.com",Token=token,)client = CosVectorsClient(config)try:resp, data = client.list_vector_buckets(MaxResults=0 # 此处填0,不符合接口要求,将返回404格式错误)print('桶列表:', data)except CosServiceError as e:print(f'原始错误信息:{e.get_origin_msg()}') # 获取原始错误信息,格式为 dictprint(f'HTTP 状态码:{e.get_status_code()}') # 获取 HTTP 状态码(如4XX,5XX)print(f'错误码:{e.get_error_code()}') # 获取 COS Vectors 定义的错误码print(f'错误信息:{e.get_error_msg()}') # 获取 COS Vectors 返回的具体错误信息,格式为 dictprint(f'请求 ID:{e.get_request_id()}') # 获取请求的 request_id