更新时间:2024-11-26 GMT+08:00
下载对象-获取下载进度(Python SDK)
支持获取下载进度的接口包括:二进制式下载,流式下载、文件下载和断点续传下载。
本示例用于获取下载对象的进度。
示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
from obs import ObsClient import os import traceback # 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险 # 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/intl/zh-cn/usermanual-ca/ca_01_0003.html ak = os.getenv("AccessKeyID") sk = os.getenv("SecretAccessKey") # 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取 # security_token = os.getenv("SecurityToken") # server填写Bucket对应的Endpoint, 这里以中国-香港为例,其他地区请按实际情况填写 server = "https://obs.ap-southeast-1.myhuaweicloud.com" # 创建obsClient实例 # 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值 obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server) # 获取下载对象的进度 def callback(transferredAmount, totalAmount, totalSeconds): # 获取下载平均速率(KB/S) print(transferredAmount * 1.0 / totalSeconds / 1024) # 获取下载进度百分比 print(transferredAmount * 100.0 / totalAmount) try: bucketName="examplebucket" objectKey="objectname" #下载对象 resp = obsClient.getObject(bucketName=bucketName,objectKey=objectKey, progressCallback=callback) # 返回码为2xx时,接口调用成功,否则接口调用失败 if resp.status < 300: print('Get Object Succeeded') print('requestId:', resp.requestId) # 读取对象内容 while True: chunk = resp.body.response.read(65536) if not chunk: break print(chunk) resp.body.response.close() else: print('Get Object Failed') print('requestId:', resp.requestId) print('errorCode:', resp.errorCode) print('errorMessage:', resp.errorMessage) except: print('Get Object Failed') print(traceback.format_exc()) |
父主题: 对象相关接口(Python SDK)