معرفی شرکت ها


dawn-sdk-0.0.9


Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر

توضیحات

This is the SDK for dawn, which is OSS system. Dawn is honorly presented by TAL's ocean team.
ویژگی مقدار
سیستم عامل -
نام فایل dawn-sdk-0.0.9
نام dawn-sdk
نسخه کتابخانه 0.0.9
نگهدارنده []
ایمیل نگهدارنده []
نویسنده TAL AI-LAB
ایمیل نویسنده author@example.com
آدرس صفحه اصلی http://dawn.shareurl.facethink.com
آدرس اینترنتی https://pypi.org/project/dawn-sdk/
مجوز -
# Document for dawn's SDK This is the SDK for dawn, which is OSS system. Dawn is honorly presented by TAL's ocean team. # OSS-SDK python 使用说明 ## 描述 - 本文档适用于OSS-SDK python语言版本的开发指南。 - 主要提供如下功能 - [x] 1.上传单个文件 - [x] 2.生成对象web访问url,该url带过期时间 - [x] 3.大文件分段上传 - [x] 4.查询租户下面的bucket列表 - [x] 5.查询bucket下面的对象列表 ## 使用前准备 - 使用OSS-SDK前需要先下载,可以采用下面的方式下载: - [x] pip install dawn-sdk // python2下载 - [x] pip3 install dawn-sdk // python3下载 - 在使用之前引入包 - 可以引入如下包 ```python from dawn_sdk import auth //认证相关类接口 from dawn_sdk import bucket //bucket类接口 from dawn_sdk.xml_body import PartInfo //分段上传返回的分段信息类 ... //其他导入 ``` ## Bucket类接口 - bucket操作相关接口 ### 1. 构造函数 - 原型 ```python def __init__(self, auth, endpoint, bucket, session=None, connect_timeout=None) ``` - 参数和返回值: - [x] auth: 认证实例对象,即auth.Authorize类的实例对象,用于认证。 - [x] endpoint: 端点,OSS服务端点,具体值请咨询服务提供者。 - [x] bucket: bucket名称。 - [x] session: 会话,通常用于复用之前使用的会话,可以不进行设置,默认不复用之前的会话。 - [x] connect_timeout: 连接超时,单位为秒,可以不设定该参数,将使用默认超时: 30s. - 返回值,无。 - 使用示例: ```python from dawn_sdk import auth from dawn_sdk import bucket access_key="<you access key>"def sign_url(self, key, expires, method='GET', headers=None, params=None) secret_key="<you secret key>"def sign_url(self, key, expires, method='GET', headers=None, params=None) //初始化认证 ath = auth.Authorize(access_kdef sign_url(self, key, expires, method='GET', headers=None, params=None) endpoint="<you OSS endpoint>" bucket_name="<you bucket name>" is_cname="<is CNAME or not>" //需要咨询服务提供商 conn_timeout=60 //设置连接超时为60s //初始化bucket bkt = bucket.Bucket(ath, endpoint, bucket_name, is_cname, connect_timeout=conn_timeout) ``` ### 2. 上传对象,从缓冲区上传 - 原型 ```python def put_object(self, key, data, headers=None, progress_callback=None, upload_speed_limited=None) ``` - 参数和返回值 - [x] key: 需要上传的对象名 - [x] data: 需要上传对象的数据,数据的长度必须小于5GB - [x] header: 用户自定义HTTP头,通常不需要自定义头, - [x] progress_callback: 上传进度回调,原型为: def progress_func(chunk_size, size) - [x] chunk_size: 已经传输的字节数 - [x] size: 总字节数。 - [x] upload_speed_limited: 上传速度限制,单位为字节每秒。不指定该参数时,即不限速。 - 返回值: 上传成功则返回PutObject对象,否则抛出异常,可以查看异常的详细信息。 - 使用示例: ```python //Bucket实例已经构造,如上的构造函数示例, //bkt = bucket.Bucket(...); //对象名 obj="<you object name>" data="<object content...>" //progress_func为上传进度回调,该参数可选,可以不指定。 progress_func=... //limit为上传速度限制,该参数可选,可以不指定。 limit=... try: result = bkt.put_object(obj, data, progress_callback=progress_func, upload_speed_limited=limit) //成功则不抛出异常。 except BaseError, err: //处理失败 ``` ### 3. 上传对象,从文件上传 - 原型 ```python def put_object_from_file(self, key, filename, headers=None, progress_callback=None, upload_speed_limited=None) ``` - 参数和返回值 - [x] key: 需要上传的对象名 - [x] filename: 需要上传的文件路径,文件大小必须小于5GB - [x] header: 用户自定义HTTP头,通常不需要自定义头, - [x] progress_callback: 上传进度回调,原型为: def progress_func(chunk_size, size) - [x] chunk_size: 已经传输的字节数 - [x] size: 总字节数。 - [x] upload_speed_limited: 上传速度限制,单位为字节每秒。不指定该参数时,即不限速。 - 返回值: 上传成功则返回PutObject对象,否则抛出异常,可以查看异常的详细信息。 - 使用示例: ```python //Bucket实例已经构造,如上的构造函数示例, //bkt = bucket.Bucket(...); //对象名 obj="<you object name>" file="<you upload file path>" //progress_func为上传进度回调,该参数可选,可以不指定。 //upload_speed_limit为上传速度限制,该参数可选,可以不指定。 try: result = bkt.put_object_from_file(obj, file, progress_callback=progress_func, upload_speed_limited=limit) //成功则不抛出异常。 except BaseError, err: //处理失败 ``` ### 4. 分段上传接口 - 分段上传是一组接口协同工作 - 初始化接口 - 原型 ```python def init_multipart_upload(self, key, headers=None) ``` - 接口说明 - [x] key: 对象名称 - [x] headers: 自定义HTTP头,通常不用指定。 - 返回值: 如果成功,则返回InitMultipartUpload对象,该对象包含了upload的id,作为后续的多次上传的参数使用;如果失败,则抛出异常。 - 使用示例: 见后面的统一示例 - 上传接口 - 原型 ```python def upload_part(self, key, upload_id, part_number, data, progress_callback=None, upload_speed_limited=None, headers=None) ``` - 接口说明 - [x] key: 对象名称quxiao - [x] upload_id: 调quxiao的返回值。 - [x] part_number: quxiao范围为[1, 10000] - [x] data: 上传的quxiao是缓冲区数据,也可以是LimitedReader对象: LimitedReader是一个受限制的读取器,可以指定读取的长度,而不是整个文件长度。每次上传的数据最大5GB,除了最后一个分段数据没有最小限制外,其他分段都必须大于等于5MB。 - [x] progress_callquxiao度回调,原型为: def progress_func(chunk_size, size) - [x] chunk_size:quxiao节数 - [x] size: 总字quxiao - [x] upload_speed_quxiao速度限制,单位为字节每秒。不指定该参数时,即不限速。 - [x] header: 用户quxiao通常不需要自定义头, - 返回值: 如果成功,则返回PutObject对象,该对象包含了该分段的ETAG,和part_number构成一个上传信息,所有的上传信息构成上传数组,作为后续完成上传的参数使用;如果失败,则抛出异常。 - 使用示例: 见后面的统一示例 - 完成上传接口 - 原型 ```python def complete_multipart_upload(self, key, upload_id, parts, headers=None) ``` - 接口说明 - [x] key: 对象名称 - [x] upload_id: 调用初始化接口的返回值。 - [x] parts: 分段上传的数组,数组元素为单词的上传信息,包含part_number和上传成功返回的ETAG。 - [x] header: 用户自定义HTTP头,通常不需要自定义头, - 返回值: 如果成功,则返回PutObject对象;如果失败,则抛出异常。 - **说明** 分段上传接口调用后,对象存储即开始计费,当调用完成或者取消接口时,分段对象才得以消除。所以请务必调用完成或者取消接口。 - 使用示例: 见后面的统一示例 - 取消上传接口 - 原型 ```python def abort_multipart_upload(self, key, upload_id) ``` - 接口说明 - [x] key: 对象名称 - [x] upload_id: 调用始化接口的返回值。 - 返回值: 成功返回Result对象;如果失败,则抛出异常。 - **说明** 分段上传接口调用后,对象存储即开始计费,当调用完成或者取消接口时,分段对象才得以消除。所以请务必调用完成或者取消接口。 - 使用示例: 见后面的统一示例 - 统一示例: ```python //Bucket实例已经构造,如上的构造函数示例, //bkt = bucket.Bucket(...); //progress_func为上传进度回调,该参数可选,可以不指定。 progress_func=... //limit为上传速度限制,该参数可选,可以不指定。 limit=... //对象名 obj="<you object name>" file="<you upload file>" flen = os.path.getsize(file) with open(file, 'rb') as f: //分片大小 slice = (1024 * 1024) * 5 //分段数 times = flen // slice //最后一段的大小 left = flen % slice uid = None //分段初始化 try: result = bkt.init_multipart_upload(obj) uid = result.upload_id except BaseError, err: //处理错误 parts = [] number = 1 while True: if times == 0: break //使用限制读取器: 限制读取器持有支持read的接口的对象。每次最多读取`slice`个字节数据。 reader = LimitedReader(f, slice) try: out = bkt.upload_part(obj, uid, number, reader, progress_callback=progress_func, upload_speed_limited=limit) part = PartInfo(number, out.etag) parts.append(part) except BaseError, err: //处理错误或者调用取消接口取消 bkt.abort_multipart_upload(obj, uid) exit(-1) number += 1 times -= 1 if left > 0: reader = LimitedReader(f, left) out = bkt.upload_part(obj, uid, number, reader, progress_callback=progress_func, upload_speed_limited=limit) part = PartInfo(number, out.etag) parts.append(part) try: result = bkt.complete_multipart_upload(obj, uid, parts) except BaseError, err: //处理错误或者重试多次直到成功。 ``` ### 生成对象web访问url接口 - 原型 ```python def sign_url(self, key, expires, method='GET', headers=None, params=None) ``` - 接口说明 - [x] key: 对象名称 - [x] expires: 过期时间,从当前时间开始的秒数。 - [x] method: 使用url时的HTTP方法,默认为GET。 - [x] headers: 自定义HTTP头,通常不用指定。 - [x] params: 自定义HTTP参数,通常不用指定。 - 返回值: 返回对象的web访问url字符串 - 使用示例 ```python //Bucket实例已经构造,如上的构造函数示例, //bkt = bucket.Bucket(...); obj="<you object name>" expires=3600 // 3600秒 == 1小时 url = bkt.sign_url() ### 查看bucket下面的对象 - 描述,使用场景 - [x] 查询bucket下面的对象 - [x] 通过设定查询的前缀来查询特定前缀的对象,通常可用于将对象名设置为带目录结构的形式,指定前缀查询,将返回目录下面的文件/文件夹。 - [x] 当对象较多时,一次查询无法完成,可以像使用迭代器一样,迭代剩余的查询结果。 - 接口描述和定义 ```python def list_objects(self, prefix='', delimiter='', marker='', max_keys=100) ``` - 参数 - [x] prefix - 查询对象时,满足指定的前缀的对象将返回。 - [x] delimiter - 查询时的分隔符,和prefix结合使用 - [x] marker - 查询时,从`标记`处开始,返回之后的对象, **注意,之后指的是对象名按照字典序排序之后。** - [x] max_keys - 查询时,每次最多返回多少个对象,当还有剩余对象的时候,可以继续查询。默认为100 - 返回值ListObjects定义 ```python class ListObjects(Result): def __init__(self, resp): super(ListObjects, self).__init__(resp) self.is_continous = False //知识是否所有的对象返回了。 self.next_marker = '' //当查询大于max_keys时,下次调用,需要使用该值作为下次调用的标记,以此来保证下次调用的正确性。 self.objects = [] //对象列表,类型如下SimplifiedBucketInfo self.prefixes = [] //目录列表 class SimplifiedBucketInfo(object): def __init__(self, name, creation_date): #: Bucket名 self.name = name #: Bucket的创建时间,类型为int。参考 :ref:`unix_time`。 self.creation_date = creation_date ``` - **接口使用示例-1** 调用步骤: - [x] 准备bucket ```python //Bucket实例已经构造,如上的构造函数示例, bkt = bucket.Bucket(...); ... ``` - [x] 查询对象 假定bucket内的对象如下: - [x] object-1 - [x] object-11 - [x] object-2 - [x] object-21 - [x] object-22 - [x] object-3 - [x] object-31 - [x] object-32 - [x] 查询所有对象(无任何参数选项) ```python objects = bkt.list_objects() //将返回所有对象 ``` - [x] 查询,每次最多返回3个对象结果。 ```python // 2. max keys option. objects = bkt.list_objects(max_keys = 3) //将返回前三个对象,返回的对象是按照对象名进行字典序排列的。 ``` - [x] 查询,带特定前缀的对象 ```python // 3. prefix option. objects = bkt.list_objects(prefix = "object-2") //将返回以object-2开头的对象,包含object-2 ``` - [x] 查询,从特定标记开始之后的对象 ```python // 4. marker option. objects = bkt.list_objects(marker = "object-22") //将返回以object-22为标记,之后的对象,注意,之后指的是按照字典序排序之后。 ``` - [x] 查询,多次查询,每次返回最多3个;并迭代查询,直到查询结束。 ```python // Case 5: List object with paging. each page has 3 objects mark = '' while True: objs = bkt.list_objects(max_keys = 3, marker = mark) //收集对象 ...... //下次的查询需要设置当前查询的返回值NextMarker为marker参数,并作为下次迭代的开始。 mark = objs.next_marker if !objs.is_continus: break ``` - [x] 查询,从特定标记开始之后的对象,并且每次最多返回3个对象; 并迭代查询,直到查询结束。 ```python // Case 6: List object with paging , marker and max keys; return 3 items each time. mark = "object-22" while True: objs = bkt.list_objects(max_keys = 3, marker = mark) //收集对象 ...... //下次的查询需要设置当前查询的返回值NextMarker为marker参数,并作为下次迭代的开始。 mark = objs.next_marker if !obj.is_continous: break ``` - [x] 查询,特定前缀的对象,并且每次最多返回3个对象; 并迭代查询,直到查询结束。 ```python // Case 7: List object with paging , with prefix and max keys; return 2 items each time. pre = "object-2" mark = "" while True: objs = bkt.list_objects(prefix = pre, marker = mark, max_keys = 3) //收集对象 ...... //下次的查询, 需要设置marker为当前查询的返回值NextMarker,并作为下次迭代的开始。 mark = objs.next_marker if !objs.is_continous: break ``` - **接口使用示例-2** 调用步骤: - [x] 准备bucket ```python //Bucket实例已经构造,如上的构造函数示例, bkt = bucket.Bucket(...); ... ``` - [x] 查询对象(文件夹下面的对象) 假定bucket内的对象如下: - [x] movie/readme.txt - [x] movie/readme.md - [x] movie/love/001.mp4 - [x] movie/love/002.rmvb - [x] movie/war/001.avi - [x] movie/war/002.rm - [x] 查询,特定目录下面的文件/文件夹 ```python objs = bkt.list_objects(prefix = "movie/", delimiter = "/") //返回以`movie/`开头, 并且以`/`分割的对象或对象前缀 // 返回对象(文件) objs.objects // 1. movie/readme.txt // 2. movie/readme.md // 返回对象前缀(文件夹) objs.prefixes // 1. movie/love/ // 2. movie/war/ ```


نیازمندی

مقدار نام
!=2.9.0 requests
>=4.2.3 lxml
>=1.5 monotonic


نحوه نصب


نصب پکیج whl dawn-sdk-0.0.9:

    pip install dawn-sdk-0.0.9.whl


نصب پکیج tar.gz dawn-sdk-0.0.9:

    pip install dawn-sdk-0.0.9.tar.gz