zl程序教程

您现在的位置是:首页 >  后端

当前栏目

OAS的使用——Python SDK

PythonSDK 使用
2023-09-14 09:02:06 时间

[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 = 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

使用一个简单的配置文件来存放配置,然后读取这个配置文件:
20

使用下面代码读取配置:

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函数后台化。脚本会将中间信息打到日志中。

日志内容:
21
22

下载后的文件:
23

代码下载:

在阅读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、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。