oss2 package¶
Submodules¶
oss2.api module¶
文件上传方法中的data参数¶
- 诸如
put_object
这样的上传接口都会有 data 参数用于接收用户数据。data 可以是下述类型 - unicode类型(对于Python3则是str类型):内部会自动转换为UTF-8的bytes
- bytes类型:不做任何转换
- file-like object:对于可以seek和tell的file object,从当前位置读取直到结束。其他类型,请确保当前位置是文件开始。
- 可迭代类型:对于无法探知长度的数据,要求一定是可迭代的。此时会通过Chunked Encoding传输。
Bucket配置修改方法中的input参数¶
诸如 put_bucket_cors
这样的Bucket配置修改接口都会有 input 参数接收用户提供的配置数据。
input 可以是下述类型
- Bucket配置信息相关的类,如 BucketCors
- unicode类型(对于Python3则是str类型)
- 经过utf-8编码的bytes类型
- file-like object
- 可迭代类型,会通过Chunked Encoding传输
也就是说 input 参数可以比 data 参数多接受第一种类型的输入。
返回值¶
Service
和 Bucket
类的大多数方法都是返回 RequestResult
及其子类。RequestResult 包含了HTTP响应的状态码、头部以及OSS Request ID,而它的子类则包含用户真正想要的结果。例如,
ListBucketsResult.buckets 就是返回的Bucket信息列表;GetObjectResult 则是一个file-like object,可以调用 read() 来获取响应的
HTTP包体。
异常¶
- 一般来说Python SDK可能会抛出三种类型的异常,这些异常都继承于
OssError
: ClientError
:由于用户参数错误而引发的异常;ServerError
及其子类:OSS服务器返回非成功的状态码,如4xx或5xx;RequestError
:底层requests库抛出的异常,如DNS解析错误,超时等;
当然,Bucket.put_object_from_file 和 Bucket.get_object_to_file 这类函数还会抛出文件相关的异常。
指定下载范围¶
诸如 get_object
以及 upload_part_copy
这样的函数,可以接受
byte_range 参数,表明读取数据的范围。该参数是一个二元tuple:(start, last)。这些接口会把它转换为Range头部的值,如:
- byte_range 为 (0, 99) 转换为 ‘bytes=0-99’,表示读取前100个字节
- byte_range 为 (None, 99) 转换为 ‘bytes=-99’,表示读取最后99个字节
- byte_range 为 (100, None) 转换为 ‘bytes=100-‘,表示读取第101个字节到文件结尾的部分(包含第101个字节)
分页罗列¶
罗列各种资源的接口,如 list_buckets
、 list_objects
都支持
分页查询。通过设定分页标记(如:marker 、 key_marker )的方式可以指定查询某一页。首次调用将分页标记设为空(缺省值,可以不设),
后续的调用使用返回值中的 next_marker 、 next_key_marker 等。每次调用后检查返回值中的 is_truncated ,其值为 False 说明
已经到了最后一页。
上传下载进度¶
上传下载接口,诸如 get_object 、 put_object 、resumable_upload,都支持进度回调函数,可以用它实现进度条等功能。
progress_callback 的函数原型如下
def progress_callback(bytes_consumed, total_bytes):
'''进度回调函数。
:param int bytes_consumed: 已经消费的字节数。对于上传,就是已经上传的量;对于下载,就是已经下载的量。
:param int total_bytes: 总长度。
'''
- 其中 total_bytes 对于上传和下载有不同的含义:
- 上传:当输入是bytes或可以seek/tell的文件对象,那么它的值就是总的字节数;否则,其值为None
- 下载:当返回的HTTP相应中有Content-Length头部,那么它的值就是Content-Length的值;否则,其值为None
Unix Time¶
OSS Python SDK会把从服务器获得时间戳都转换为自1970年1月1日UTC零点以来的秒数,即Unix Time。 参见 Unix Time
- OSS中常用的时间格式有
- HTTP Date格式,形如 Sat, 05 Dec 2015 11:04:39 GMT 这样的GMT时间。 用在If-Modified-Since、Last-Modified这些HTTP请求、响应头里。
- ISO8601格式,形如 2015-12-05T00:00:00.000Z。 用在生命周期管理配置、列举Bucket结果中的创建时间、列举文件结果中的最后修改时间等处。
http_date 函数把Unix Time转换为HTTP Date;而 http_to_unixtime 则做相反的转换。如
>>> import oss2, time
>>> unix_time = int(time.time()) # 当前UNIX Time,设其值为 1449313829
>>> date_str = oss2.http_date(unix_time) # 得到 'Sat, 05 Dec 2015 11:10:29 GMT'
>>> oss2.http_to_unixtime(date_str) # 得到 1449313829
Note
生成HTTP协议所需的日期(即HTTP Date)时,请使用 http_date , 不要使用 strftime 这样的函数。因为后者是和locale相关的。 比如,strftime 结果中可能会出现中文,而这样的格式,OSS服务器是不能识别的。
iso8601_to_unixtime 把ISO8601格式转换为Unix Time;date_to_iso8601 和 iso8601_to_date 则在ISO8601格式的字符串和 datetime.date之间相互转换。如
>>> import oss2
>>> d = oss2.iso8601_to_date('2015-12-05T00:00:00.000Z') # 得到 datetime.date(2015, 12, 5)
>>> date_str = oss2.date_to_iso8601(d) # 得到 '2015-12-05T00:00:00.000Z'
>>> oss2.iso8601_to_unixtime(date_str) # 得到 1449273600
-
class
oss2.api.
Bucket
(auth, endpoint, bucket_name, is_cname=False, session=None, connect_timeout=None, app_name='', enable_crc=True)[source]¶ Bases:
oss2.api._Base
用于Bucket和Object操作的类,诸如创建、删除Bucket,上传、下载Object等。
用法(假设Bucket属于杭州区域)
>>> import oss2 >>> auth = oss2.Auth('your-access-key-id', 'your-access-key-secret') >>> bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'your-bucket') >>> bucket.put_object('readme.txt', 'content of the object') <oss2.models.PutObjectResult object at 0x029B9930>
Parameters: - auth (oss2.Auth) – 包含了用户认证信息的Auth对象
- endpoint (str) – 访问域名或者CNAME
- bucket_name (str) – Bucket名
- is_cname (bool) – 如果endpoint是CNAME则设为True;反之,则为False。
- session (oss2.Session) – 会话。如果是None表示新开会话,非None则复用传入的会话
- connect_timeout (float) – 连接超时时间,以秒为单位。
- app_name (str) – 应用名。该参数不为空,则在User Agent中加入其值。 注意到,最终这个字符串是要作为HTTP Header的值传输的,所以必须要遵循HTTP标准。
-
ACL
= 'acl'¶
-
BUCKET_INFO
= 'bucketInfo'¶
-
COMP
= 'comp'¶
-
CORS
= 'cors'¶
-
LIFECYCLE
= 'lifecycle'¶
-
LIVE
= 'live'¶
-
LOCATION
= 'location'¶
-
LOGGING
= 'logging'¶
-
REFERER
= 'referer'¶
-
STAT
= 'stat'¶
-
STATUS
= 'status'¶
-
SYMLINK
= 'symlink'¶
-
VOD
= 'vod'¶
-
WEBSITE
= 'website'¶
-
abort_multipart_upload
(key, upload_id)[source]¶ 取消分片上传。
Parameters: - key (str) – 待上传的文件名,这个文件名要和
init_multipart_upload()
的文件名一致。 - upload_id (str) – 分片上传ID
Returns: - key (str) – 待上传的文件名,这个文件名要和
-
append_object
(key, position, data, headers=None, progress_callback=None, init_crc=None)[source]¶ 追加上传一个文件。
Parameters: - key (str) – 新的文件名,或已经存在的可追加文件名
- position (int) – 追加上传一个新的文件, position 设为0;追加一个已经存在的可追加文件, position 设为文件的当前长度。 position 可以从上次追加的结果 AppendObjectResult.next_position 中获得。
- data (str、bytes、file-like object或可迭代对象) – 用户数据
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 用户指定的HTTP头部。可以指定Content-Type、Content-MD5、x-oss-开头的头部等
- progress_callback – 用户指定的进度回调函数。参考 上传下载进度
Returns: Raises: 如果 position 和当前文件长度不一致,抛出
PositionNotEqualToLength
; 如果当前文件不是可追加类型,抛出ObjectNotAppendable
; 还会抛出其他一些异常
-
batch_delete_objects
(key_list)[source]¶ 批量删除文件。待删除文件列表不能为空。
Parameters: key_list (list of str) – 文件名列表,不能为空。 Returns: BatchDeleteObjectsResult
-
complete_multipart_upload
(key, upload_id, parts, headers=None)[source]¶ 完成分片上传,创建文件。
Parameters: - key (str) – 待上传的文件名,这个文件名要和
init_multipart_upload()
的文件名一致。 - upload_id (str) – 分片上传ID
- parts (list of PartInfo <oss2.models.PartInfo>) – PartInfo列表。PartInfo中的part_number和etag是必填项。其中的etag可以从
upload_part()
的返回值中得到。 - headers (可以是dict,建议是oss2.CaseInsensitiveDict) – HTTP头部
Returns: - key (str) – 待上传的文件名,这个文件名要和
-
copy_object
(source_bucket_name, source_key, target_key, headers=None)[source]¶ 拷贝一个文件到当前Bucket。
Parameters: - source_bucket_name (str) – 源Bucket名
- source_key (str) – 源文件名
- target_key (str) – 目标文件名
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – HTTP头部
Returns:
-
create_bucket
(permission=None, input=None)[source]¶ 创建新的Bucket。
Parameters: - permission (str) – 指定Bucket的ACL。可以是oss2.BUCKET_ACL_PRIVATE(推荐、缺省)、oss2.BUCKET_ACL_PUBLIC_READ或是 oss2.BUCKET_ACL_PUBLIC_READ_WRITE。
- input –
BucketCreateConfig
object
-
create_live_channel
(channel_name, input)[source]¶ 创建推流直播频道
Parameters: - channel_name (str) – 要创建的live channel的名称
- input – LiveChannelInfo类型,包含了live channel中的描述信息
Returns:
-
delete_bucket
()[source]¶ 删除一个Bucket。只有没有任何文件,也没有任何未完成的分片上传的Bucket才能被删除。
Returns: RequestResult
”:raises: 如果试图删除一个非空Bucket,则抛出
BucketNotEmpty
-
delete_live_channel
(channel_name)[source]¶ 删除推流直播频道
Parameters: channel_name (str) – 要删除的live channel的名称
-
delete_object
(key)[source]¶ 删除一个文件。
Parameters: key (str) – 文件名 Returns: RequestResult
-
get_bucket_acl
()[source]¶ 获取Bucket的ACL。
Returns: GetBucketAclResult
-
get_bucket_cors
()[source]¶ 获取Bucket的CORS配置。
Returns: GetBucketCorsResult
-
get_bucket_info
()[source]¶ 获取bucket相关信息,如创建时间,访问Endpoint,Owner与ACL等。
Returns: GetBucketInfoResult
-
get_bucket_lifecycle
()[source]¶ 获取生命周期管理配置。
Returns: GetBucketLifecycleResult
Raises: 如果没有设置Lifecycle,则抛出 NoSuchLifecycle
-
get_bucket_location
()[source]¶ 获取Bucket的数据中心。
Returns: GetBucketLocationResult
-
get_bucket_logging
()[source]¶ 获取Bucket的访问日志功能配置。
Returns: GetBucketLoggingResult
-
get_bucket_referer
()[source]¶ 获取Bucket的防盗链配置。
Returns: GetBucketRefererResult
-
get_bucket_stat
()[source]¶ 查看Bucket的状态,目前包括bucket大小,bucket的object数量,bucket正在上传的Multipart Upload事件个数等。
Returns: GetBucketStatResult
-
get_bucket_website
()[source]¶ 获取Bucket的静态网站托管配置。
Returns: GetBucketWebsiteResult
Raises: 如果没有设置静态网站托管,那么就抛出 NoSuchWebsite
-
get_live_channel
(channel_name)[source]¶ 获取直播频道配置
Parameters: channel_name (str) – 要获取的live channel的名称 Returns: GetLiveChannelResult
-
get_live_channel_history
(channel_name)[source]¶ 获取live channel中最近的最多十次的推流记录,记录中包含推流的起止时间和远端的地址
param str channel_name: 要获取最近推流记录的live channel的名称
return:
GetLiveChannelHistoryResult
-
get_live_channel_stat
(channel_name)[source]¶ 获取live channel当前推流的状态
param str channel_name: 要获取推流状态的live channel的名称
return:
GetLiveChannelStatResult
-
get_object
(key, byte_range=None, headers=None, progress_callback=None, process=None)[source]¶ 下载一个文件。
用法
>>> result = bucket.get_object('readme.txt') >>> print(result.read()) 'hello world'
Parameters: Returns: file-like object
Raises: 如果文件不存在,则抛出
NoSuchKey
;还可能抛出其他异常
-
get_object_acl
(key)[source]¶ 获取文件的ACL。
Returns: GetObjectAclResult
-
get_object_meta
(key)[source]¶ 获取文件基本元信息,包括该Object的ETag、Size(文件大小)、LastModified,并不返回其内容。
HTTP响应的头部包含了文件基本元信息,可以通过 GetObjectMetaResult 的 last_modified,content_length,`etag` 成员获得。
Parameters: key – 文件名 Returns: GetObjectMetaResult
Raises: 如果文件不存在,则抛出 NoSuchKey
;还可能抛出其他异常
-
get_object_to_file
(key, filename, byte_range=None, headers=None, progress_callback=None, process=None)[source]¶ 下载一个文件到本地文件。
Parameters: Returns: 如果文件不存在,则抛出
NoSuchKey
;还可能抛出其他异常
-
get_symlink
(symlink_key)[source]¶ 获取符号连接文件的目标文件。
Parameters: symlink_key (str) – 符号连接类文件 Returns: GetSymlinkResult
Raises: 如果文件的符号链接不存在,则抛出 NoSuchKey
;还可能抛出其他异常
-
head_object
(key, headers=None)[source]¶ 获取文件元信息。
HTTP响应的头部包含了文件元信息,可以通过 RequestResult 的 headers 成员获得。 用法
>>> result = bucket.head_object('readme.txt') >>> print(result.content_type) text/plain
Parameters: - key – 文件名
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – HTTP头部
Returns: Raises: 如果Bucket不存在或者Object不存在,则抛出
NotFound
-
init_multipart_upload
(key, headers=None)[source]¶ 初始化分片上传。
返回值中的 upload_id 以及Bucket名和Object名三元组唯一对应了此次分片上传事件。
Parameters: - key (str) – 待上传的文件名
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – HTTP头部
Returns:
-
list_live_channel
(prefix='', marker='', max_keys=100)[source]¶ 列举出Bucket下所有符合条件的live channel
param: str prefix: list时channel_id的公共前缀 param: str marker: list时指定的起始标记 param: int max_keys: 本次list返回live channel的最大个数
return:
ListLiveChannelResult
-
list_multipart_uploads
(prefix='', delimiter='', key_marker='', upload_id_marker='', max_uploads=1000)[source]¶ 罗列正在进行中的分片上传。支持分页。
Parameters: - prefix (str) – 只罗列匹配该前缀的文件的分片上传
- delimiter (str) – 目录分割符
- key_marker (str) – 文件名分页符。第一次调用可以不传,后续设为返回值中的 next_key_marker
- upload_id_marker (str) – 分片ID分页符。第一次调用可以不传,后续设为返回值中的 next_upload_id_marker
- max_uploads (int) – 一次罗列最多能够返回的条目数
Returns:
-
list_objects
(prefix='', delimiter='', marker='', max_keys=100)[source]¶ 根据前缀罗列Bucket里的文件。
Parameters: - prefix (str) – 只罗列文件名为该前缀的文件
- delimiter (str) – 分隔符。可以用来模拟目录
- marker (str) – 分页标志。首次调用传空串,后续使用返回值的next_marker
- max_keys (int) – 最多返回文件的个数,文件和目录的和不能超过该值
Returns:
-
list_parts
(key, upload_id, marker='', max_parts=1000)[source]¶ 列举已经上传的分片。支持分页。
Parameters: - key (str) – 文件名
- upload_id (str) – 分片上传ID
- marker (str) – 分页符
- max_parts (int) – 一次最多罗列多少分片
Returns:
-
post_vod_playlist
(channel_name, playlist_name, start_time=0, end_time=0)[source]¶ 根据指定的playlist name以及startTime和endTime生成一个点播的播放列表
param str channel_name: 要生成点播列表的live channel的名称 param str playlist_name: 要生成点播列表m3u8文件的名称 param int start_time: 点播的起始时间,Unix Time格式,可以使用int(time.time())获取 param int end_time: 点播的结束时间,Unix Time格式,可以使用int(time.time())获取
-
put_bucket_acl
(permission)[source]¶ 设置Bucket的ACL。
Parameters: permission (str) – 新的ACL,可以是oss2.BUCKET_ACL_PRIVATE、oss2.BUCKET_ACL_PUBLIC_READ或 oss2.BUCKET_ACL_PUBLIC_READ_WRITE
-
put_bucket_cors
(input)[source]¶ 设置Bucket的CORS。
Parameters: input – BucketCors
对象或其他
-
put_bucket_lifecycle
(input)[source]¶ 设置生命周期管理的配置。
Parameters: input – BucketLifecycle
对象或其他
-
put_bucket_logging
(input)[source]¶ 设置Bucket的访问日志功能。
Parameters: input – BucketLogging
对象或其他
-
put_bucket_referer
(input)[source]¶ 为Bucket设置防盗链。
Parameters: input – BucketReferer
对象或其他
-
put_bucket_website
(input)[source]¶ 为Bucket配置静态网站托管功能。
Parameters: input – BucketWebsite
-
put_live_channel_status
(channel_name, status)[source]¶ 更改live channel的status,仅能在“enabled”和“disabled”两种状态中更改
param str channel_name: 要更改status的live channel的名称 param str status: live channel的目标status
-
put_object
(key, data, headers=None, progress_callback=None)[source]¶ 上传一个普通文件。
- 用法 ::
>>> bucket.put_object('readme.txt', 'content of readme.txt') >>> with open(u'local_file.txt', 'rb') as f: >>> bucket.put_object('remote_file.txt', f)
Parameters: - key – 上传到OSS的文件名
- data (bytes,str或file-like object) – 待上传的内容。
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 用户指定的HTTP头部。可以指定Content-Type、Content-MD5、x-oss-meta-开头的头部等
- progress_callback – 用户指定的进度回调函数。可以用来实现进度条等功能。参考 上传下载进度 。
Returns:
-
put_object_acl
(key, permission)[source]¶ 设置文件的ACL。
Parameters: - key (str) – 文件名
- permission (str) – 可以是oss2.OBJECT_ACL_DEFAULT、oss2.OBJECT_ACL_PRIVATE、oss2.OBJECT_ACL_PUBLIC_READ或 oss2.OBJECT_ACL_PUBLIC_READ_WRITE。
Returns:
-
put_object_from_file
(key, filename, headers=None, progress_callback=None)[source]¶ 上传一个本地文件到OSS的普通文件。
Parameters: - key (str) – 上传到OSS的文件名
- filename (str) – 本地文件名,需要有可读权限
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 用户指定的HTTP头部。可以指定Content-Type、Content-MD5、x-oss-meta-开头的头部等
- progress_callback – 用户指定的进度回调函数。参考 上传下载进度
Returns:
-
put_symlink
(target_key, symlink_key, headers=None)[source]¶ 创建Symlink。
Parameters: - target_key (str) – 目标文件,目标文件不能为符号连接
- symlink_key (str) – 符号连接类文件,其实质是一个特殊的文件,数据指向目标文件
Returns:
-
restore_object
(key)[source]¶ - restore an object
如果是第一次针对该object调用接口,返回RequestResult.status = 202; 如果已经成功调用过restore接口,且服务端仍处于解冻中,抛异常RestoreAlreadyInProgress(status=409) 如果已经成功调用过restore接口,且服务端解冻已经完成,再次调用时返回RequestResult.status = 200,且会将object的可下载时间延长一天,最多延长7天。 如果object不存在,则抛异常NoSuchKey(status=404); 对非Archive类型的Object提交restore,则抛异常OperationNotSupported(status=400)
也可以通过调用head_object接口来获取meta信息来判断是否可以restore与restore的状态 代码示例:: >>> meta = bucket.head_object(key) >>> if meta.resp.headers[‘x-oss-storage-class’] == oss2.BUCKET_STORAGE_CLASS_ARCHIVE: >>> bucket.restore_object(key) >>> while True: >>> meta = bucket.head_object(key) >>> if meta.resp.headers[‘x-oss-restore’] == ‘ongoing-request=”true”’: >>> time.sleep(5) >>> else: >>> break
Parameters: key (str) – object name Returns: RequestResult
-
sign_rtmp_url
(channel_name, playlist_name, expires)[source]¶ 生成RTMP推流的签名URL。 常见的用法是生成加签的URL以供授信用户向OSS推RTMP流。
Parameters: - channel_name – 直播频道的名称
- expires – 过期时间(单位:秒),链接在当前时间再过expires秒后过期
- playlist_name – 播放列表名称,注意与创建live channel时一致
- params – 需要签名的HTTP查询参数
Returns: 签名URL。
-
sign_url
(method, key, expires, headers=None, params=None)[source]¶ 生成签名URL。
常见的用法是生成加签的URL以供授信用户下载,如为log.jpg生成一个5分钟后过期的下载链接:
>>> bucket.sign_url('GET', 'log.jpg', 5 * 60) 'http://your-bucket.oss-cn-hangzhou.aliyuncs.com/logo.jpg?OSSAccessKeyId=YourAccessKeyId\&Expires=1447178011&Signature=UJfeJgvcypWq6Q%2Bm3IJcSHbvSak%3D'
Parameters: - method (str) – HTTP方法,如’GET’、’PUT’、’DELETE’等
- key – 文件名
- expires – 过期时间(单位:秒),链接在当前时间再过expires秒后过期
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 需要签名的HTTP头部,如名称以x-oss-meta-开头的头部(作为用户自定义元数据)、 Content-Type头部等。对于下载,不需要填。
- params – 需要签名的HTTP查询参数
Returns: 签名URL。
-
update_object_meta
(key, headers)[source]¶ 更改Object的元数据信息,包括Content-Type这类标准的HTTP头部,以及以x-oss-meta-开头的自定义元数据。
用户可以通过
head_object()
获得元数据信息。Parameters: - key (str) – 文件名
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – HTTP头部,包含了元数据信息
Returns: RequestResult
-
upload_part
(key, upload_id, part_number, data, progress_callback=None, headers=None)[source]¶ 上传一个分片。
Parameters: - key (str) – 待上传文件名,这个文件名要和
init_multipart_upload()
的文件名一致。 - upload_id (str) – 分片上传ID
- part_number (int) – 分片号,最小值是1.
- data – 待上传数据。
- progress_callback – 用户指定进度回调函数。可以用来实现进度条等功能。参考 上传下载进度 。
- headers (可以是dict,建议是oss2.CaseInsensitiveDict) – 用户指定的HTTP头部。可以指定Content-MD5头部等
Returns: - key (str) – 待上传文件名,这个文件名要和
-
class
oss2.api.
Service
(auth, endpoint, session=None, connect_timeout=None, app_name='')[source]¶ Bases:
oss2.api._Base
用于Service操作的类,如罗列用户所有的Bucket。
用法
>>> import oss2 >>> auth = oss2.Auth('your-access-key-id', 'your-access-key-secret') >>> service = oss2.Service(auth, 'oss-cn-hangzhou.aliyuncs.com') >>> service.list_buckets() <oss2.models.ListBucketsResult object at 0x0299FAB0>
Parameters: - auth (oss2.Auth) – 包含了用户认证信息的Auth对象
- endpoint (str) – 访问域名,如杭州区域的域名为oss-cn-hangzhou.aliyuncs.com
- session (oss2.Session) – 会话。如果是None表示新开会话,非None则复用传入的会话
- connect_timeout (float) – 连接超时时间,以秒为单位。
- app_name (str) – 应用名。该参数不为空,则在User Agent中加入其值。 注意到,最终这个字符串是要作为HTTP Header的值传输的,所以必须要遵循HTTP标准。
oss.auth module¶
-
class
oss2.auth.
AnonymousAuth
[source]¶ Bases:
object
用于匿名访问。
Note
匿名用户只能读取public-read的Bucket,或只能读取、写入public-read-write的Bucket。 不能进行Service、Bucket相关的操作,也不能罗列文件等。
-
class
oss2.auth.
Auth
(access_key_id, access_key_secret)[source]¶ Bases:
object
用于保存用户AccessKeyId、AccessKeySecret,以及计算签名的对象。
-
class
oss2.auth.
StsAuth
(access_key_id, access_key_secret, security_token)[source]¶ Bases:
object
用于STS临时凭证访问。可以通过官方STS客户端获得临时密钥(AccessKeyId、AccessKeySecret)以及临时安全令牌(SecurityToken)。
注意到临时凭证会在一段时间后过期,在此之前需要重新获取临时凭证,并更新
Bucket
的 auth 成员变量为新 的 StsAuth 实例。Parameters: - access_key_id (str) – 临时AccessKeyId
- access_key_secret (str) – 临时AccessKeySecret
- security_token (str) – 临时安全令牌(SecurityToken)
oss.compat module¶
兼容Python版本
oss.defaults module¶
oss2.defaults¶
全局缺省变量。
-
oss2.defaults.
connect_timeout
= 60¶ 连接超时时间
-
oss2.defaults.
connection_pool_size
= 10¶ 每个Session连接池大小
-
oss2.defaults.
logger
= <logging.RootLogger object>¶ 缺省 Logger
-
oss2.defaults.
multiget_num_threads
= 4¶ 并行下载(multiget)缺省线程数
-
oss2.defaults.
multiget_part_size
= 10485760¶ 并行下载(multiget)的缺省分片大小
-
oss2.defaults.
multiget_threshold
= 104857600¶ 对于断点下载,如果OSS文件大小大于该值就进行并行下载(multiget)
-
oss2.defaults.
multipart_num_threads
= 1¶ 分片上传缺省线程数
-
oss2.defaults.
multipart_threshold
= 10485760¶ 对于某些接口,上传数据长度大于或等于该值时,就采用分片上传。
-
oss2.defaults.
part_size
= 10485760¶ 缺省分片大小
-
oss2.defaults.
request_retries
= 3¶ 缺省重试次数
oss.exceptions module¶
oss2.exceptions¶
异常类。
-
exception
oss2.exceptions.
AccessDenied
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'AccessDenied'¶
-
status
= 403¶
-
-
exception
oss2.exceptions.
BucketNotEmpty
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.Conflict
-
code
= 'BucketNotEmpty'¶
-
status
= 409¶
-
-
exception
oss2.exceptions.
ChannelStillLive
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.Conflict
-
code
= 'ChannelStillLive'¶
-
status
= 409¶
-
-
exception
oss2.exceptions.
ClientError
(message)[source]¶ Bases:
oss2.exceptions.OssError
-
exception
oss2.exceptions.
Conflict
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= ''¶
-
status
= 409¶
-
-
exception
oss2.exceptions.
InconsistentError
(message, request_id='')[source]¶ Bases:
oss2.exceptions.OssError
-
exception
oss2.exceptions.
InvalidArgument
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'InvalidArgument'¶
-
status
= 400¶
-
-
exception
oss2.exceptions.
InvalidDigest
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'InvalidDigest'¶
-
status
= 400¶
-
-
exception
oss2.exceptions.
InvalidObjectName
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'InvalidObjectName'¶
-
status
= 400¶
-
-
exception
oss2.exceptions.
InvalidRequest
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'InvalidRequest'¶
-
status
= 400¶
-
-
exception
oss2.exceptions.
LiveChannelDisabled
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.Conflict
-
code
= 'LiveChannelDisabled'¶
-
status
= 409¶
-
-
exception
oss2.exceptions.
MalformedXml
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'MalformedXML'¶
-
status
= 400¶
-
-
exception
oss2.exceptions.
NoSuchBucket
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.NotFound
-
code
= 'NoSuchBucket'¶
-
status
= 404¶
-
-
exception
oss2.exceptions.
NoSuchCors
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.NotFound
-
code
= 'NoSuchCORSConfiguration'¶
-
status
= 404¶
-
-
exception
oss2.exceptions.
NoSuchKey
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.NotFound
-
code
= 'NoSuchKey'¶
-
status
= 404¶
-
-
exception
oss2.exceptions.
NoSuchLifecycle
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.NotFound
-
code
= 'NoSuchLifecycle'¶
-
status
= 404¶
-
-
exception
oss2.exceptions.
NoSuchLiveChannel
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.NotFound
-
code
= 'NoSuchLiveChannel'¶
-
status
= 404¶
-
-
exception
oss2.exceptions.
NoSuchUpload
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.NotFound
-
code
= 'NoSuchUpload'¶
-
status
= 404¶
-
-
exception
oss2.exceptions.
NoSuchWebsite
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.NotFound
-
code
= 'NoSuchWebsiteConfiguration'¶
-
status
= 404¶
-
-
exception
oss2.exceptions.
NotFound
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= ''¶
-
status
= 404¶
-
-
exception
oss2.exceptions.
NotModified
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= ''¶
-
status
= 304¶
-
-
exception
oss2.exceptions.
ObjectNotAppendable
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.Conflict
-
code
= 'ObjectNotAppendable'¶
-
status
= 409¶
-
-
exception
oss2.exceptions.
OperationNotSupported
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'OperationNotSupported'¶
-
status
= 400¶
-
-
exception
oss2.exceptions.
OssError
(status, headers, body, details)[source]¶ Bases:
exceptions.Exception
-
body
= None¶ HTTP响应体(部分)
-
code
= None¶ OSS错误码
-
details
= None¶ 详细错误信息,是一个string到string的dict
-
message
= None¶ OSS错误信息
-
request_id
= None¶ 请求ID,用于跟踪一个OSS请求。提交工单时,最好能够提供请求ID
-
status
= None¶ HTTP 状态码
-
-
exception
oss2.exceptions.
PositionNotEqualToLength
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.Conflict
-
code
= 'PositionNotEqualToLength'¶
-
status
= 409¶
-
-
exception
oss2.exceptions.
PreconditionFailed
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'PreconditionFailed'¶
-
status
= 412¶
-
-
exception
oss2.exceptions.
RequestError
(e)[source]¶ Bases:
oss2.exceptions.OssError
-
exception
oss2.exceptions.
RestoreAlreadyInProgress
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.ServerError
-
code
= 'RestoreAlreadyInProgress'¶
-
status
= 409¶
-
-
exception
oss2.exceptions.
ServerError
(status, headers, body, details)[source]¶ Bases:
oss2.exceptions.OssError
-
oss2.exceptions.
klass
¶ alias of
AccessDenied
oss.http module¶
oss.iterators module¶
oss2.iterators¶
该模块包含了一些易于使用的迭代器,可以用来遍历Bucket、文件、分片上传等。
-
class
oss2.iterators.
BucketIterator
(service, prefix='', marker='', max_keys=100, max_retries=None)[source]¶ Bases:
oss2.iterators._BaseIterator
遍历用户Bucket的迭代器。
每次迭代返回的是
SimplifiedBucketInfo
对象。Parameters: - service –
Service
对象 - prefix – 只列举匹配该前缀的Bucket
- marker – 分页符。只列举Bucket名字典序在此之后的Bucket
- max_keys – 每次调用 list_buckets 时的max_keys参数。注意迭代器返回的数目可能会大于该值。
- service –
-
class
oss2.iterators.
LiveChannelIterator
(bucket, prefix='', marker='', max_keys=100, max_retries=None)[source]¶ Bases:
oss2.iterators._BaseIterator
遍历Bucket里文件的迭代器。
每次迭代返回的是
LiveChannelInfo
对象。Parameters: - bucket –
Bucket
对象 - prefix – 只列举匹配该前缀的文件
- marker – 分页符
- max_keys – 每次调用 list_live_channel 时的max_keys参数。注意迭代器返回的数目可能会大于该值。
- bucket –
-
class
oss2.iterators.
MultipartUploadIterator
(bucket, prefix='', delimiter='', key_marker='', upload_id_marker='', max_uploads=1000, max_retries=None)[source]¶ Bases:
oss2.iterators._BaseIterator
遍历Bucket里未完成的分片上传。
每次返回
MultipartUploadInfo
对象。 当 MultipartUploadInfo.is_prefix() 返回True时,表明是公共前缀(目录)。Parameters: - bucket –
Bucket
对象 - prefix – 仅列举匹配该前缀的文件的分片上传
- delimiter – 目录分隔符
- key_marker – 文件名分页符
- upload_id_marker – 分片上传ID分页符
- max_uploads – 每次调用 list_multipart_uploads 时的max_uploads参数。注意迭代器返回的数目可能会大于该值。
- bucket –
-
class
oss2.iterators.
ObjectIterator
(bucket, prefix='', delimiter='', marker='', max_keys=100, max_retries=None)[source]¶ Bases:
oss2.iterators._BaseIterator
遍历Bucket里文件的迭代器。
每次迭代返回的是
SimplifiedObjectInfo
对象。 当 SimplifiedObjectInfo.is_prefix() 返回True时,表明是公共前缀(目录)。Parameters: - bucket –
Bucket
对象 - prefix – 只列举匹配该前缀的文件
- delimiter – 目录分隔符
- marker – 分页符
- max_keys – 每次调用 list_objects 时的max_keys参数。注意迭代器返回的数目可能会大于该值。
- bucket –
-
class
oss2.iterators.
ObjectUploadIterator
(bucket, key, max_uploads=1000, max_retries=None)[source]¶ Bases:
oss2.iterators._BaseIterator
遍历一个Object所有未完成的分片上传。
每次返回
MultipartUploadInfo
对象。 当 MultipartUploadInfo.is_prefix() 返回True时,表明是公共前缀(目录)。Parameters: - bucket –
Bucket
对象 - key – 文件名
- max_uploads – 每次调用 list_multipart_uploads 时的max_uploads参数。注意迭代器返回的数目可能会大于该值。
- bucket –
-
class
oss2.iterators.
PartIterator
(bucket, key, upload_id, marker='0', max_parts=1000, max_retries=None)[source]¶ Bases:
oss2.iterators._BaseIterator
遍历一个分片上传会话中已经上传的分片。
每次返回
PartInfo
对象。Parameters: - bucket –
Bucket
对象 - key – 文件名
- upload_id – 分片上传ID
- marker – 分页符
- max_parts – 每次调用 list_parts 时的max_parts参数。注意迭代器返回的数目可能会大于该值。
- bucket –
oss.models module¶
oss2.models¶
该模块包含Python SDK API接口所需要的输入参数以及返回值类型。
-
class
oss2.models.
AbortMultipartUpload
(days=None, created_before_date=None)[source]¶ Bases:
object
删除parts
Parameters: - days – 删除相对最后修改时间days天之后的parts
- created_before_date – 删除最后修改时间早于created_before_date的parts
-
class
oss2.models.
AppendObjectResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
crc
= None¶ 本次追加写完成后,OSS上文件的CRC64值
-
etag
= None¶ HTTP ETag
-
next_position
= None¶ 下次追加写的偏移
-
-
class
oss2.models.
BatchDeleteObjectsResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
deleted_keys
= None¶ 已经删除的文件名列表
-
-
class
oss2.models.
BucketInfo
(name=None, owner=None, location=None, storage_class=None, intranet_endpoint=None, extranet_endpoint=None, creation_date=None, acl=None)[source]¶ Bases:
object
-
class
oss2.models.
BucketLifecycle
(rules=None)[source]¶ Bases:
object
Bucket的生命周期配置。
Parameters: rules (list of LifecycleRule
) – 规则列表,
-
class
oss2.models.
BucketLogging
(target_bucket, target_prefix)[source]¶ Bases:
object
Bucket日志配置信息。
Parameters: - target_bucket (str) – 存储日志到这个Bucket。
- target_prefix (str) – 生成的日志文件名加上该前缀。
-
class
oss2.models.
BucketReferer
(allow_empty_referer, referers)[source]¶ Bases:
object
Bucket防盗链设置。
Parameters: - allow_empty_referer (bool) – 是否允许空的Referer。
- referers – Referer列表,每个元素是一个str。
-
class
oss2.models.
BucketStat
(storage_size_in_bytes, object_count, multi_part_upload_count)[source]¶ Bases:
object
-
class
oss2.models.
BucketWebsite
(index_file, error_file)[source]¶ Bases:
object
静态网站托管配置。
Parameters: - index_file (str) – 索引页面文件
- error_file (str) – 404页面文件
-
class
oss2.models.
CorsRule
(allowed_origins=None, allowed_methods=None, allowed_headers=None, expose_headers=None, max_age_seconds=None)[source]¶ Bases:
object
CORS(跨域资源共享)规则。
Parameters: - allowed_origins (list of str) – 允许跨域访问的域。
- allowed_methods (list of str) – 允许跨域访问的HTTP方法,如’GET’等。
- allowed_headers (list of str) – 允许跨域访问的HTTP头部。
-
class
oss2.models.
CreateLiveChannelResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
,oss2.models.LiveChannelInfo
-
class
oss2.models.
GetBucketAclResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
acl
= None¶ Bucket的ACL,其值可以是 BUCKET_ACL_PRIVATE、BUCKET_ACL_PUBLIC_READ`或`BUCKET_ACL_PUBLIC_READ_WRITE。
-
-
class
oss2.models.
GetBucketLifecycleResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
,oss2.models.BucketLifecycle
-
class
oss2.models.
GetBucketLocationResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
location
= None¶ Bucket所在的数据中心
-
-
class
oss2.models.
GetLiveChannelHistoryResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
,oss2.models.LiveChannelHistory
-
class
oss2.models.
GetLiveChannelResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
,oss2.models.LiveChannelInfo
-
class
oss2.models.
GetLiveChannelStatResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
,oss2.models.LiveChannelStat
-
class
oss2.models.
GetObjectAclResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
acl
= None¶ 文件的ACL,其值可以是 OBJECT_ACL_DEFAULT、OBJECT_ACL_PRIVATE、OBJECT_ACL_PUBLIC_READ`或 `OBJECT_ACL_PUBLIC_READ_WRITE
-
-
class
oss2.models.
GetObjectMetaResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
content_length
= None¶ Content-Length,文件大小,类型为int。
-
etag
= None¶ HTTP ETag
-
-
class
oss2.models.
GetObjectResult
(resp, progress_callback=None, crc_enabled=False)[source]¶ Bases:
oss2.models.HeadObjectResult
-
client_crc
¶
-
server_crc
¶
-
-
class
oss2.models.
GetSymlinkResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
target_key
= None¶ 符号连接的目标文件
-
-
class
oss2.models.
HeadObjectResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
content_length
= None¶ Content-Length,可能是None。
-
content_type
= None¶ 文件的MIME类型
-
etag
= None¶ HTTP ETag
-
object_type
= None¶ 文件类型,可以是’Normal’、’Multipart’、’Appendable’等
-
-
class
oss2.models.
InitMultipartUploadResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
upload_id
= None¶ 新生成的Upload ID
-
-
class
oss2.models.
LifecycleExpiration
(days=None, date=None, created_before_date=None)[source]¶ Bases:
object
过期删除操作。
Parameters: - days – 表示在文件修改后过了这么多天,就会匹配规则,从而被删除
- date (datetime.date) – 表示在该日期之后,规则就一直生效。即每天都会对符合前缀的文件执行删除操作(如,删除),而不管文件是什么时候生成的。 不建议使用
- created_before_date – delete files if their last modified time earlier than created_before_date
-
class
oss2.models.
LifecycleRule
(id, prefix, status='Enabled', expiration=None, abort_multipart_upload=None, storage_transitions=None)[source]¶ Bases:
object
生命周期规则。
Parameters: - id – 规则名
- prefix – 只有文件名匹配该前缀的文件才适用本规则
- expiration (
LifecycleExpiration
) – 过期删除操作。 - status – 启用还是禁止该规则。可选值为 LifecycleRule.ENABLED 或 LifecycleRule.DISABLED
-
DISABLED
= 'Disabled'¶
-
ENABLED
= 'Enabled'¶
-
class
oss2.models.
ListBucketsResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
buckets
= None¶ 得到的Bucket列表,类型为
SimplifiedBucketInfo
。
-
is_truncated
= None¶ True表示还有更多的Bucket可以罗列;False表示已经列举完毕。
-
next_marker
= None¶ 下一次罗列的分页标记符,即,可以作为
list_buckets
的 marker 参数。
-
-
class
oss2.models.
ListLiveChannelResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
,oss2.models.LiveChannelList
-
class
oss2.models.
ListMultipartUploadsResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
is_truncated
= None¶ True表示还有更多的为完成分片上传可以罗列;False表示已经列举完毕。
-
next_key_marker
= None¶ 文件名分页符
-
next_upload_id_marker
= None¶ 分片上传ID分页符
-
prefix_list
= None¶ 公共前缀列表。类型为str列表。
-
upload_list
= None¶ 分片上传列表。类型为`MultipartUploadInfo`列表。
-
-
class
oss2.models.
ListObjectsResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
is_truncated
= None¶ True表示还有更多的文件可以罗列;False表示已经列举完毕。
-
next_marker
= None¶ 下一次罗列的分页标记符,即,可以作为
list_objects
的 marker 参数。
-
object_list
= None¶ 本次罗列得到的文件列表。其中元素的类型为
SimplifiedObjectInfo
。
-
prefix_list
= None¶ 本次罗列得到的公共前缀列表,类型为str列表。
-
-
class
oss2.models.
ListPartsResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
class
oss2.models.
LiveChannelAudioStat
(codec='', sample_rate=0, bandwidth=0)[source]¶ Bases:
object
LiveStat中的Audio节点。
Parameters: - codec (str) – 编码方式。
- sample_rate (int) – 采样率。
- bandwidth (int) – 码率。
-
class
oss2.models.
LiveChannelInfo
(status='enabled', description='', target=None, last_modified=None, name=None, play_url=None, publish_url=None)[source]¶ Bases:
object
Live channel(直播频道)配置。
Parameters: - status (str) – 直播频道的状态,合法的值为”enabled”和”disabled”。
- description (str) – 直播频道的描述信息,最长为128字节。
- target – 直播频道的推流目标节点,包含目标协议相关的参数。
:type class:LiveChannelInfoTarget <oss2.models.LiveChannelInfoTarget>
Parameters: - last_modified (int, 参考 Unix Time。) – 直播频道的最后修改时间,这个字段仅在`ListLiveChannel`时使用。
- name (str) – 直播频道的名称。
- play_url (str) – 播放地址。
- publish_url (str) – 推流地址。
-
class
oss2.models.
LiveChannelInfoTarget
(type='HLS', frag_duration=5, frag_count=3, playlist_name='')[source]¶ Bases:
object
Live channel中的Target节点,包含目标协议的一些参数。
Parameters: - type (str) – 协议,目前仅支持HLS。
- frag_duration (int) – HLS协议下生成的ts文件的期望时长,单位为秒。
- frag_count (int) – HLS协议下m3u8文件里ts文件的数量。
-
class
oss2.models.
LiveChannelList
(prefix='', marker='', max_keys=100, is_truncated=False, next_marker='')[source]¶ Bases:
object
List直播频道的结果。
Parameters: - prefix (str) – List直播频道使用的前缀。
- marker (str) – List直播频道使用的marker。
- max_keys (int) – List时返回的最多的直播频道的条数。
- is_truncated (bool) – 本次List是否列举完所有的直播频道
- next_marker – 下一次List直播频道使用的marker。
- channels (list,类型为
LiveChannelInfo
) – List返回的直播频道列表
-
class
oss2.models.
LiveChannelStat
(status='', remote_addr='', connected_time='', video=None, audio=None)[source]¶ Bases:
object
LiveStat结果。
Parameters: - status – 直播状态。
- remote_addr (str) – 客户端的地址。
- connected_time (int, unix time) – 本次推流开始时间。
- video (class:LiveChannelVideoStat <oss2.models.LiveChannelVideoStat>) – 视频描述信息。
- audio (class:LiveChannelAudioStat <oss2.models.LiveChannelAudioStat>) – 音频描述信息。
-
class
oss2.models.
LiveChannelVideoStat
(width=0, height=0, frame_rate=0, codec='', bandwidth=0)[source]¶ Bases:
object
LiveStat中的Video节点。
Parameters: - width (int) – 视频的宽度。
- height (int) – 视频的高度。
- frame_rate (int) – 帧率。
- codec (str) – 编码方式。
- bandwidth (int) – 码率。
-
class
oss2.models.
LiveRecord
(start_time='', end_time='', remote_addr='')[source]¶ Bases:
object
直播频道中的推流记录信息
Parameters:
-
class
oss2.models.
MultipartUploadInfo
(key, upload_id, initiation_date)[source]¶ Bases:
object
-
key
= None¶ 文件名
-
upload_id
= None¶ 分片上传ID
-
-
class
oss2.models.
PartInfo
(part_number, etag, size=None, last_modified=None)[source]¶ Bases:
object
表示分片信息的文件。
该文件既用于
list_parts
的输出,也用于complete_multipart_upload
的输入。Parameters: - part_number (int) – 分片号
- etag (str) – 分片的ETag
- size (int) – 分片的大小。仅用在 list_parts 的结果里。
- last_modified (int) – 该分片最后修改的时间戳,类型为int。参考 Unix Time
-
class
oss2.models.
PutObjectResult
(resp)[source]¶ Bases:
oss2.models.RequestResult
-
crc
= None¶ 文件上传后,OSS上文件的CRC64值
-
etag
= None¶ HTTP ETag
-
-
class
oss2.models.
RequestResult
(resp)[source]¶ Bases:
object
-
headers
= None¶ HTTP头
-
request_id
= None¶ 请求ID,用于跟踪一个OSS请求。提交工单时,最后能够提供请求ID
-
resp
= None¶ HTTP响应
-
status
= None¶ HTTP状态码
-
-
class
oss2.models.
SimplifiedBucketInfo
(name, location, creation_date)[source]¶ Bases:
object
list_buckets
结果中的单个元素类型。-
location
= None¶ Bucket的区域
-
name
= None¶ Bucket名
-
oss.resumable module¶
oss2.resumable¶
该模块包含了断点续传相关的函数和类。
-
class
oss2.resumable.
ResumableDownloadStore
(root=None, dir=None)[source]¶ Bases:
oss2.resumable._ResumableStoreBase
保存断点下载断点信息的类。
每次下载的断点信息会保存在 root/dir/ 下面的某个文件里。
Parameters: - root (str) – 父目录,缺省为HOME
- dir (str) – 子目录,缺省为 _DOWNLOAD_TEMP_DIR
-
class
oss2.resumable.
ResumableStore
(root=None, dir=None)[source]¶ Bases:
oss2.resumable._ResumableStoreBase
保存断点上传断点信息的类。
每次上传的信息会保存在 root/dir/ 下面的某个文件里。
Parameters: - root (str) – 父目录,缺省为HOME
- dir (str) – 子目录,缺省为 _UPLOAD_TEMP_DIR
-
oss2.resumable.
determine_part_size
(total_size, preferred_size=None)[source]¶ 确定分片上传是分片的大小。
Parameters: - total_size (int) – 总共需要上传的长度
- preferred_size (int) – 用户期望的分片大小。如果不指定则采用defaults.part_size
Returns: 分片大小
-
oss2.resumable.
resumable_download
(bucket, key, filename, multiget_threshold=None, part_size=None, progress_callback=None, num_threads=None, store=None)[source]¶ 断点下载。
- 实现的方法是:
- 在本地创建一个临时文件,文件名由原始文件名加上一个随机的后缀组成;
- 通过指定请求的 Range 头按照范围并发读取OSS文件,并写入到临时文件里对应的位置;
- 全部完成之后,把临时文件重命名为目标文件 (即 filename )
在上述过程中,断点信息,即已经完成的范围,会保存在磁盘上。因为某种原因下载中断,后续如果下载 同样的文件,也就是源文件和目标文件一样,就会先读取断点信息,然后只下载缺失的部分。
缺省设置下,断点信息保存在 HOME 目录的一个子目录下。可以通过 store 参数更改保存位置。
- 使用该函数应注意如下细节:
- 对同样的源文件、目标文件,避免多个程序(线程)同时调用该函数。因为断点信息会在磁盘上互相覆盖,或临时文件名会冲突。
- 避免使用太小的范围(分片),即 part_size 不宜过小,建议大于或等于 oss2.defaults.multiget_part_size 。
- 如果目标文件已经存在,那么该函数会覆盖此文件。
Parameters: - bucket –
Bucket
对象。 - key (str) – 待下载的远程文件名。
- filename (str) – 本地的目标文件名。
- multiget_threshold (int) – 文件长度大于该值时,则使用断点下载。
- part_size (int) – 指定期望的分片大小,即每个请求获得的字节数,实际的分片大小可能有所不同。
- progress_callback – 下载进度回调函数。参见 上传下载进度 。
- num_threads – 并发下载的线程数,如不指定则使用 oss2.defaults.multiget_num_threads 。
- store (ResumableDownloadStore) – 用来保存断点信息的持久存储,可以指定断点信息所在的目录。
Raises: 如果OSS文件不存在,则抛出
NotFound
;也有可能抛出其他因下载文件而产生的异常。
-
oss2.resumable.
resumable_upload
(bucket, key, filename, store=None, headers=None, multipart_threshold=None, part_size=None, progress_callback=None, num_threads=None)[source]¶ 断点上传本地文件。
实现中采用分片上传方式上传本地文件,缺省的并发数是 oss2.defaults.multipart_num_threads ,并且在 本地磁盘保存已经上传的分片信息。如果因为某种原因上传被中断,下次上传同样的文件,即源文件和目标文件路径都 一样,就只会上传缺失的分片。
缺省条件下,该函数会在用户 HOME 目录下保存断点续传的信息。当待上传的本地文件没有发生变化, 且目标文件名没有变化时,会根据本地保存的信息,从断点开始上传。
Parameters: - bucket –
Bucket
对象 - key – 上传到用户空间的文件名
- filename – 待上传本地文件名
- store – 用来保存断点信息的持久存储,参见
ResumableStore
的接口。如不指定,则使用 ResumableStore 。 - headers – 传给 put_object 或 init_multipart_upload 的HTTP头部
- multipart_threshold – 文件长度大于该值时,则用分片上传。
- part_size – 指定分片上传的每个分片的大小。如不指定,则自动计算。
- progress_callback – 上传进度回调函数。参见 上传下载进度 。
- num_threads – 并发上传的线程数,如不指定则使用 oss2.defaults.multipart_num_threads 。
- bucket –
oss.utils module¶
oss2.utils¶
工具函数模块。
-
class
oss2.utils.
SizedFileAdapter
(file_object, size)[source]¶ Bases:
object
通过这个适配器(Adapter),可以把原先的 file_object 的长度限制到等于 size。
-
len
¶
-
-
oss2.utils.
content_md5
(data)[source]¶ 计算data的MD5值,经过Base64编码并返回str类型。
返回值可以直接作为HTTP Content-Type头部的值
-
oss2.utils.
copyfileobj_and_verify
(fsrc, fdst, expected_len, chunk_size=16384, request_id='')[source]¶ copy data from file-like object fsrc to file-like object fdst, and verify length
-
oss2.utils.
http_date
(timeval=None)[source]¶ 返回符合HTTP标准的GMT时间字符串,用strftime的格式表示就是”%a, %d %b %Y %H:%M:%S GMT”。 但不能使用strftime,因为strftime的结果是和locale相关的。
-
oss2.utils.
http_to_unixtime
(time_string)[source]¶ 把HTTP Date格式的字符串转换为UNIX时间(自1970年1月1日UTC零点的秒数)。
HTTP Date形如 Sat, 05 Dec 2015 11:10:29 GMT 。
-
oss2.utils.
iso8601_to_unixtime
(time_string)[source]¶ 把ISO8601时间字符串(形如,2012-02-24T06:07:48.000Z)转换为UNIX时间,精确到秒。
-
oss2.utils.
make_crc_adapter
(data, init_crc=0)[source]¶ 返回一个适配器,从而在读取 data ,即调用read或者对其进行迭代的时候,能够计算CRC。
Parameters: - data – 可以是bytes、file object或iterable
- init_crc – 初始CRC值,可选
Returns: 能够调用计算CRC函数的适配器
-
oss2.utils.
make_progress_adapter
(data, progress_callback, size=None)[source]¶ - 返回一个适配器,从而在读取 data ,即调用read或者对其进行迭代的时候,能够
- 调用进度回调函数。当 size 没有指定,且无法确定时,上传回调函数返回的总字节数为None。
Parameters: - data – 可以是bytes、file object或iterable
- progress_callback – 进度回调函数,参见 上传下载进度
- size – 指定 data 的大小,可选
Returns: 能够调用进度回调函数的适配器