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
)。

使用需求

  1. 使用Python SDK编写脚本上传100个小文件(1M-32M),上传10个大文件(1G-5G)
  2. 使用Python SDK编写脚本查询上传后的Vault信息
  3. 使用Python SDK编写脚本下载所有的上传文件
  4. 使用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相关推荐

  1. python 智能识别 商品_阿里云货架商品识别与管理Python SDK使用示例-阿里云开发者社区...

    概述 货架商品识别与管理(Retail Image Recognition)是基于深度学习.图像检测.图像识别等技术,为新零售品牌商/经销商提供AI商品识别能力的阿里云产品:适用于货架商品识别.陈列识 ...

  2. Tungsten Fabric SDN — VNC API — API Client 的 Python SDK

    目录 文章目录 目录 VNC API Client 安装 VNC API Client API Model 示例程序 Troubleshooting VNC API Client Tungsten F ...

  3. python 断点重传_性能调优-python SDK 调优

    python SDK python 和 java 或者和 GO ,在性能上来说都不是最好的,而且 python 无法支持多核的并发,只能跑在单核上的多线程.但是 oss 也提供了相应的方法提高多线程的 ...

  4. python如何使用sdk_七牛云存储Python SDK使用教程 - 基本介绍

    本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作. 安装 首先,要使用Python的SDK必须要先安装.七牛的Python SDK是开源的,托管在Githu ...

  5. 使用阿里云Python SDK管理ECS安全组

    准备工作 本机操作系统:CentOS7 python版本:python2.7.5 还需要准备如下信息: 一个云账号.Access Key ID.Access Key Secret.安全组ID.Regi ...

  6. 七牛云存储Python SDK使用教程 - 上传策略详解

    本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作. 前言 我们在上面的两节中了解到,客户端上传文件时,需要从业务服务器申请一个上传凭证(Upload Tok ...

  7. python sdk怎么用_如何使用七牛Python SDK写一个同步脚本及使用教程

    七牛云存储的 Python 语言版本 SDK(本文以下称 Python-SDK)是对七牛云存储API协议的一层封装,以提供一套对于 Python 开发者而言简单易用的开发工具.Python 开发者在对 ...

  8. 使用ActionTrail Python SDK

    ActionTrail提供官方的Python SDK.本文将简单介绍一下如何使用ActionTrail的Python SDK. 安装Aliyun Core SDK. pip install aliyu ...

  9. aws python库_适用于Alexa的新AWS Python SDK入门指南

    aws python库 by Ralu Bolovan 由Ralu Bolovan 适用于Alexa的新AWS Python SDK入门指南 (A Beginner's guide to the ne ...

  10. 如何开发python sdk调用数据_Python SDK调用示例

    开发者可以通过Python SDK,调用物联网数据分析中生成的API. 步骤一:安装SDK 登录Python官方网站下载2.6.5及以上版本的Python,并按说明完成安装. (可选)安装Python ...

最新文章

  1. linux的网络地址配置,教你如何完成Linux网络地址配置
  2. linux centos7 报错: “Repository base is listed more than once in the configuration“和“没有可用软件包 xxx“ 解决方法
  3. c++primer 5th第15章基础、课后习题自己解析、心得体会等
  4. c语言c99标准_C语言的灵魂指针,配合这个新增的关键字,能够生成更高效的程序...
  5. 04751计算机网络安全讲解,【19份】04751计算机网络安全自考试卷_历年真题自考答案及解析_湖南080901计算机科学与技术(原B080702计算机及应用)专业-自考生资料网...
  6. 音视频开发(17)---RTSP再学习 -- 利用FFmpeg 将 rtsp 获取H264裸流并保存到文件中
  7. 两大方案,只为写出更安全的代码!
  8. if condition 大于_西门子进一步扩展Sinumerik Edge 平台的应用程序AnalyzeMyMachine/Condition...
  9. Oracle 单实例数据库安装和real application clusters数据库安装的区别
  10. 局域网共享工具_[9月17号]局域网环境下文件共享和打印机共享的系统工具软件 局域网共享精灵 V1.0...
  11. artset下载_artset绘画软件下载
  12. 我的第一个C语言:用点阵显示出我的名字拼音首字母。
  13. 头条号如何提高文章推荐量和阅读量,头条号提高文章阅读量和推荐量的方法
  14. easyui的filebox赋值回显
  15. SaaSBase:什么是为知笔记?
  16. 干货 :六招教你用Python分分钟构建好玩的深度学习应用
  17. 苹果的破局几招:修漏洞、降价、官方认证翻新机……...
  18. 7周入门数据分析:(2)分析界的No.1——Excel
  19. 网络学习之网络通信设备辨析
  20. 斯坦福I2V:一个用于以图搜视频的新闻视频数据集

热门文章

  1. dingo php,Laravel+Dingo/Api 自定义响应 | 码农网
  2. 一个农村博士的独白:全家为什么只有我读到了博士
  3. 小宁百度了php一句话用菜刀,web学习01day攻防世界web简单题
  4. ALU计算机专业术语,计算机专业术语大全
  5. Sublime不支持GDK导致中文乱码(两种方法)
  6. 阐明iOS证书和provision文件
  7. windows操作系统服务器 网卡速度关联项
  8. 中文编程入门(Lua5.4中文版)第一个 Lua 程序,世界,你好!
  9. 笔记本计算机无法启动怎么解决,笔记本开机进不了系统,教您笔记本开机无法进入系统怎么办...
  10. 数据结构 创建结构体学生表 c语言