OAS的使用——Python SDK
OAS的使用——Python SDK
[TOC]
当需要向OAS备份归档的文件量非常大的时候,通过web控制台和命令行工具来完成是不可能的,这时候需要使用OAS提供的SDK编写操作代码来实现,SDK包括Python SDK和Java SDK,本文主要讲解Python SDK, Java SDK的使用可以参考官方文档中的开发者工具和[最佳实践](https://docs.aliyun.com/?spm=5176.383338.201.102.NNmH36#/pub/oas/best_practice/java_sdk_demo
)。
使用需求
- 使用Python SDK编写脚本上传100个小文件(1M-32M),上传10个大文件(1G-5G)
- 使用Python SDK编写脚本查询上传后的Vault信息
- 使用Python SDK编写脚本下载所有的上传文件
- 使用Python SDK编写脚本删除已上传的所有文件
Python SDK概述
Python SDK是对API的一层封装,方便用户编写Python脚本来实现各种操作。官方文档中提到,Python SDK包含低级接口和高级接口。
低级接口是对API的最直接封装,在使用低级接口时必须对照API使用手册进行开发,需要仔细阅读API手册,对API中描述的各种参数需要比较清楚,因此使用灵活但是不够高效。
高级接口是对低级接口的封装,降低了用户的学习量,提高开发效率,而且代码也比低级接口更加清晰,因此官方建议一般用户都使用高级接口,在极个别高级接口不太灵活操作的地方使用低级接口。
本文所有代码均基于Python SDK的高级接口编写。
准备工作
根据使用需求,我需要准备好待上传的文件以及配置。
写个函数生成需要的文件:
def genfile(filePath, size):splitSize = 100 with open(filePath, 'w') as fd:if size <= splitSize:fd.seek(1024*1024*size - 10)randomString = "".join(random.sample("abcedfghigklmnopqrstuvwxyz", 10))fd.write(randomString)else: for i in range(size/splitSize):fd.seek((i + 1)*splitSize*1024*1024 - 10)randomString = "".join(random.sample("abcedfghigklmnopqrstuvwxyz", 10))fd.write(randomString)if size % splitSize != 0:fd.seek(size*1024*1024 - 10)randomString = "".join(random.sample("abcedfghigklmnopqrstuvwxyz", 10))fd.write(randomString)def generate_files():file_index = 0file_prefix = 'test_file_%s'file_dir = 'files'for i in xrange(0, 105):if i < 100:size = random.randint(1, 32)else:size = random.randint(1024, 5 * 1024)path = os.path.join(file_dir, file_prefix % file_index)genfile(path, size)file_index += 1
使用一个简单的配置文件来存放配置,然后读取这个配置文件:
使用下面代码读取配置:
class ConfHolder(object):def __init__(self, conf_path):self.conf_path = conf_pathself.parser = ConfigParser.SafeConfigParser()self._read_conf()def _read_conf(self):try:self.parser.read(self.conf_path)self.host = self.parser.get('access', 'host')self.id = self.parser.get('access', 'id')self.key = self.parser.get('access', 'key')self.vault_name = self.parser.get('access', 'vault_name')self.local_path = self.parser.get('files', 'local_path')self.download_path = self.parser.get('files', 'download_path')except Exception, e:log.exception(e)print "Read Config File Error!"print esys.exit(1)
Python SDK的使用
Python SDK中几个重要对象
Python SDK的高级接口抽象出来几个重要的对象:Vault、Uploader和Job。使用这三个对象基本可以完成常见的工作。实际上,Vault是所有操作的入口,更加直接的说法,我们在使用Python SDK的时候,只需要import两个包:
from oas.oas_api import OASAPI
from oas.ease.vault import Vault
其中Uploader和Job对象在Vault的类方法中生成。
重要的方法
创建Vault:
# 创建 Vault
vault = Vault.create_vault(api, '[Vault Name]')
上传Archive:
archive_id = vault.upload_archive('[File Path]')
下载 Archive:
#retrieve_archive生成一个Job类型的对象
#Job对象的具体方法和属性可以查看官方文档
job = vault.retrieve_archive('[Archive ID]')
job.download_to_file('[File Path]')
初始化multipart upload
#initiate_uploader 生成一个Uploader对象,用于进行multipart upload
#Uploader对象的具体方法和属性可以查看官方文档
uploader = vault.initiate_uploader('[File Path]')
下面使用这些对象和方法完成需求工作。
实现代码
class Task
有四个方法: upload
, download
,info
, delete
, 分别完成上传、下载、查询和删除工作。
upload
上传的文件包含100个小文件和5个大文件,大文件采用multipart方式上传,对于上传失败的multipart,还将调用resume
来恢复上传,保存上传成功文件的filename和archive_id;
download
将上传成功的文件下载至另外一个目录。
info
使用retrieve_inventory来查询信息。
delete
将已上传的所有文件删除。
注意:
由于OAS的元数据信息并非是实时更新,而且job调度是异步的,因此整个程序不会马上返回,可能会长时间阻塞,因此建议将程序写成Damon。
代码
代码包含配置文件(配置host, id以及key等)、生成文件代码和OAS SDK使用代码,另外提供了一个Python的daemonize函数,使用daemonize函数后台化。脚本会将中间信息打到日志中。
日志内容:
下载后的文件:
代码下载:
总结
在阅读API使用手册之后对整个系统的操作有比较清晰认识之后,参考官方文档的示例代码和SDK说明文档,OAS服务的使用非常容易上手。
OAS的使用——Python SDK相关推荐
- python 智能识别 商品_阿里云货架商品识别与管理Python SDK使用示例-阿里云开发者社区...
概述 货架商品识别与管理(Retail Image Recognition)是基于深度学习.图像检测.图像识别等技术,为新零售品牌商/经销商提供AI商品识别能力的阿里云产品:适用于货架商品识别.陈列识 ...
- Tungsten Fabric SDN — VNC API — API Client 的 Python SDK
目录 文章目录 目录 VNC API Client 安装 VNC API Client API Model 示例程序 Troubleshooting VNC API Client Tungsten F ...
- python 断点重传_性能调优-python SDK 调优
python SDK python 和 java 或者和 GO ,在性能上来说都不是最好的,而且 python 无法支持多核的并发,只能跑在单核上的多线程.但是 oss 也提供了相应的方法提高多线程的 ...
- python如何使用sdk_七牛云存储Python SDK使用教程 - 基本介绍
本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作. 安装 首先,要使用Python的SDK必须要先安装.七牛的Python SDK是开源的,托管在Githu ...
- 使用阿里云Python SDK管理ECS安全组
准备工作 本机操作系统:CentOS7 python版本:python2.7.5 还需要准备如下信息: 一个云账号.Access Key ID.Access Key Secret.安全组ID.Regi ...
- 七牛云存储Python SDK使用教程 - 上传策略详解
本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作. 前言 我们在上面的两节中了解到,客户端上传文件时,需要从业务服务器申请一个上传凭证(Upload Tok ...
- python sdk怎么用_如何使用七牛Python SDK写一个同步脚本及使用教程
七牛云存储的 Python 语言版本 SDK(本文以下称 Python-SDK)是对七牛云存储API协议的一层封装,以提供一套对于 Python 开发者而言简单易用的开发工具.Python 开发者在对 ...
- 使用ActionTrail Python SDK
ActionTrail提供官方的Python SDK.本文将简单介绍一下如何使用ActionTrail的Python SDK. 安装Aliyun Core SDK. pip install aliyu ...
- aws python库_适用于Alexa的新AWS Python SDK入门指南
aws python库 by Ralu Bolovan 由Ralu Bolovan 适用于Alexa的新AWS Python SDK入门指南 (A Beginner's guide to the ne ...
- 如何开发python sdk调用数据_Python SDK调用示例
开发者可以通过Python SDK,调用物联网数据分析中生成的API. 步骤一:安装SDK 登录Python官方网站下载2.6.5及以上版本的Python,并按说明完成安装. (可选)安装Python ...
最新文章
- linux的网络地址配置,教你如何完成Linux网络地址配置
- linux centos7 报错: “Repository base is listed more than once in the configuration“和“没有可用软件包 xxx“ 解决方法
- c++primer 5th第15章基础、课后习题自己解析、心得体会等
- c语言c99标准_C语言的灵魂指针,配合这个新增的关键字,能够生成更高效的程序...
- 04751计算机网络安全讲解,【19份】04751计算机网络安全自考试卷_历年真题自考答案及解析_湖南080901计算机科学与技术(原B080702计算机及应用)专业-自考生资料网...
- 音视频开发(17)---RTSP再学习 -- 利用FFmpeg 将 rtsp 获取H264裸流并保存到文件中
- 两大方案,只为写出更安全的代码!
- if condition 大于_西门子进一步扩展Sinumerik Edge 平台的应用程序AnalyzeMyMachine/Condition...
- Oracle 单实例数据库安装和real application clusters数据库安装的区别
- 局域网共享工具_[9月17号]局域网环境下文件共享和打印机共享的系统工具软件 局域网共享精灵 V1.0...
- artset下载_artset绘画软件下载
- 我的第一个C语言:用点阵显示出我的名字拼音首字母。
- 头条号如何提高文章推荐量和阅读量,头条号提高文章阅读量和推荐量的方法
- easyui的filebox赋值回显
- SaaSBase:什么是为知笔记?
- 干货 :六招教你用Python分分钟构建好玩的深度学习应用
- 苹果的破局几招:修漏洞、降价、官方认证翻新机……...
- 7周入门数据分析:(2)分析界的No.1——Excel
- 网络学习之网络通信设备辨析
- 斯坦福I2V:一个用于以图搜视频的新闻视频数据集
热门文章
- dingo php,Laravel+Dingo/Api 自定义响应 | 码农网
- 一个农村博士的独白:全家为什么只有我读到了博士
- 小宁百度了php一句话用菜刀,web学习01day攻防世界web简单题
- ALU计算机专业术语,计算机专业术语大全
- Sublime不支持GDK导致中文乱码(两种方法)
- 阐明iOS证书和provision文件
- windows操作系统服务器 网卡速度关联项
- 中文编程入门(Lua5.4中文版)第一个 Lua 程序,世界,你好!
- 笔记本计算机无法启动怎么解决,笔记本开机进不了系统,教您笔记本开机无法进入系统怎么办...
- 数据结构 创建结构体学生表 c语言