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是对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 = 0 file_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_path self.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 e sys.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服务的使用非常容易上手。
如何制作一个Python SDK并实现私服上传下载 在我们日常工作中,经常需要与上下游交互,特别是当我们做一些基础服务时,需要提供个其他部门使用,因此,需要编写相应的SDK上传至公司私服,供其他部门使用。今天,果冻就来和大家一起实现一个简单的Python SDK,并进行私服的上传和下载。
【DSW Gallery】使用EAS Python SDK完成模型部署 针对在线推理场景,PAI平台提供了在线预测服务PAI-EAS(Elastic Algorithm Service),支持基于异构硬件(CPU和GPU)的模型加载和数据请求的实时响应。通过PAI-EAS,您可以将模型快速部署为RESTful API,再通过HTTP请求的方式调用该服务。您可以使用EAS提供的Python SDK,来管理PAI-EAS服务。
【DSW Gallery】使用Python SDK管理DSW实例 PAI DSW提供Python SDK来封装DSW的OpenAPI,使得用户可以用Python代码来管理DSW实例,包括创建、停止、保存、删除、列举等功能。本文也会介绍如何在独占资源组中创建实例。
物联网平台之python语言的设备端接入、云端sdk集成调用 本文介绍如何调用Python语言的Paho MQTT类库,将设备接入阿里云物联网平台,并进行消息收发。 以及物联网平台提供Python语言的云端SDK供开发人员使用。本文介绍云端Python SDK的安装和配置,及使用Python SDK调用云端API的示例。
阿里云机器翻译产品机器批量翻译服务 Python SDK 调用指南 阿里云机器翻译产品下的机器批量翻译服务,支持同时对多段文本进行翻译。本文介绍如何使用机器批量翻译提供的Python SDK,包括SDK的安装方法及SDK代码示例。
阿里云智能视觉生产图像处理裁剪/尺寸变换Python SDK使用说明 裁剪/尺寸变换用于对输入的图片进行指定尺寸变换,自动判断主体区域位置,使用最佳的裁剪方式完成裁剪。本文介绍如何使用阿里云智能视觉生产图像处理裁剪/尺寸变换Python SDK,包括SDK的安装方法及SDK代码示例。
Python、Java SDK两种方式调用阿里云人脸检测与五官定位 阿里云视觉智能开放平台基于达摩院自研的人脸人体分析技术,提供人脸检测与五官定位、人脸属性识别、人脸比对、人脸搜索、人体检测、人体属性、行为分析等多种功能,为开发者和企业用户提供高性能高可用的人脸人体识别服务。广泛应用于数字门店、楼宇门禁、身份识别、互动娱乐、IPC摄像头、内容广告等领域。此篇文章简单介绍人脸人体与五官定位python,java两种方式调用。
阿里云存储服务 193985 阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
相关文章
- Python获取时间戳_python爬虫时间戳
- 符合python命名规范的标识符是什么_Python标识符命名规范
- python复现softmax损失函数详细版
- 如何绘制qq图_python画图
- python chmod_Python os.chmod用法及代码示例
- lambda表达式python_Python中的Lambda表达式「建议收藏」
- python hexdump_笨办法学 Python · 续 练习 26:`hexdump`
- python使用opencv如何保存图片_OpenCV Python 保存图片
- eval在python中是什么意思_如何在Python中使用eval ?
- 人生苦短,我用Python-手把手教你如何使用python写串口调试助手
- python3.7 安装alipay-sdk-python(PyCrypto)
- 使用python接入docker sdk通过docker api操作docker
- python-Python与SQLite数据库-使用Python执行SQLite查询(二)
- python-Python与SQLite数据库-处理SQLite查询结果(二)
- python-Python与PostgreSQL数据库-使用Python执行PostgreSQL查询(一)
- python-Python与PostgreSQL数据库-使用Python执行PostgreSQL查询(二)
- Ubuntu18.04 一键升级Python所有第三方包 及安装python包的方法
- 一步一步学会在Linux上运行Python程序(linux运行python程序)
- 使用Python执行Linux命令的方法(python调用linux命令)
- 使用Python操作MySQL数据库快速上手(python访问mysql数据库)
- python学习Linux、Python,体验自由的乐趣(lexlinux)
- 一步步学习:利用Python连接MySQL数据库(python连接mysql数据库)
- Python驱动Oracle数据库(python操作oracle)
- python驱动使用pip安装MySQL Python驱动的简单步骤(pip安装mysql)
- Python与Linux:开启互联网信息技术时代(python和linux)
- 在Linux系统中使用Python编程语言(linux中python)