Skip to main content

Aliyun OSS SDK for Python with async support

Project description

阿里云 OSS Python SDK(支持异步)

English README

概述

基于 httpx 的阿里云对象存储 Python SDK,支持异步操作并提供类型提示。

[!Note]

  • 此版本不包含 osscmd 命令行工具。
  • 此版本仅支持 Python 3.10 及以上版本。
  • 此版本仅支持 V4 签名。

运行环境

Python 3.10 及以上版本。

安装

通过 PIP 安装官方发布版本:

pip install aliyun-oss-x

如果需要使用阿里云 KMS 加密,请安装 aliyun-kms 扩展包:

pip install aliyun-oss-x[aliyun-kms]

快速入门

同步用法

import aliyun_oss_x

endpoint = 'http://oss-cn-hangzhou.aliyuncs.com' # 假设你的存储桶位于杭州地区

auth = aliyun_oss_x.Auth('<你的 AccessKeyID>', '<你的 AccessKeySecret>')
bucket = aliyun_oss_x.Bucket(auth, endpoint, '<你的存储桶名称>')

# 存储桶中的对象键为 story.txt
key = 'story.txt'

# 上传
bucket.put_object(key, 'Ali Baba 是一个快乐的青年。')

# 下载
bucket.get_object(key).read()

# 删除
bucket.delete_object(key)

# 遍历存储桶中的所有对象
for object_info in aliyun_oss_x.ObjectIterator(bucket):
    print(object_info.key)

异步用法

import asyncio

import aliyun_oss_x

endpoint = 'http://oss-cn-hangzhou.aliyuncs.com' # 假设你的存储桶位于杭州地区

auth = aliyun_oss_x.Auth('<你的 AccessKeyID>', '<你的 AccessKeySecret>')
bucket = aliyun_oss_x.AsyncBucket(auth, endpoint, '<你的存储桶名称>', region="cn-hangzhou")

async def main():
    # 存储桶中的对象键为 story.txt
    key = 'story.txt'

    # 上传
    await bucket.put_object(key, 'Ali Baba 是一个快乐的青年。')

    # 下载
    await bucket.get_object(key).read()

    # 删除
    await bucket.delete_object(key)

    # 遍历存储桶中的所有对象
    async for object_info in aliyun_oss_x.AsyncObjectIterator(bucket):
        print(object_info.key)

asyncio.run(main())

更多示例请参考 "examples" 目录下的代码。

错误处理

除非另有说明,Python SDK 接口在出错时会抛出异常(参见 aliyun_oss_x.exceptions 子模块)。以下是一个示例:

try:
    result = bucket.get_object(key)
    print(result.read())
except aliyun_oss_x.exceptions.NoSuchKey as e:
    print('{0} 未找到:http_status={1}, request_id={2}'.format(key, e.status, e.request_id))

设置日志

以下代码可以设置 'aliyun_oss_x' 的日志级别:

import logging
logging.getLogger('aliyun_oss_x').setLevel(logging.WARNING)

测试

首先通过环境变量设置测试所需的 AccessKeyId、AccessKeySecret、endpoint 和 bucket 信息(不要使用生产环境的存储桶)。 以 Linux 系统为例:

export OSS_TEST_ACCESS_KEY_ID=<AccessKeyId>
export OSS_TEST_ACCESS_KEY_SECRET=<AccessKeySecret>
export OSS_TEST_ENDPOINT=<endpoint>
export OSS_TEST_BUCKET=<bucket>

export OSS_TEST_STS_ID=<用于测试 STS  AccessKeyId>
export OSS_TEST_STS_KEY=<用于测试 STS  AccessKeySecret>
export OSS_TEST_STS_ARN=<用于测试 STS 的角色 ARN>

按以下方式运行测试:

nosetests                          # 首先安装 nose

更多资源

联系我们

许可证

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aliyun_oss_x-0.1.6.tar.gz (148.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aliyun_oss_x-0.1.6-py3-none-any.whl (168.2 kB view details)

Uploaded Python 3

File details

Details for the file aliyun_oss_x-0.1.6.tar.gz.

File metadata

  • Download URL: aliyun_oss_x-0.1.6.tar.gz
  • Upload date:
  • Size: 148.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.19.1 CPython/3.11.6 Windows/10

File hashes

Hashes for aliyun_oss_x-0.1.6.tar.gz
Algorithm Hash digest
SHA256 2a490c297c01af2ab94d8e07bdb1cc7c6e8a1830ef010285e8fda7c1a06620f7
MD5 52b2fedb21e2cebbc61da5429b63ea1c
BLAKE2b-256 74aa025e74dddc3bf368cd592b8a4bd67e020b027f495be69e6bbca374726652

See more details on using hashes here.

File details

Details for the file aliyun_oss_x-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: aliyun_oss_x-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 168.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.19.1 CPython/3.11.6 Windows/10

File hashes

Hashes for aliyun_oss_x-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 596ab0cc5733ed30dd9b405c2fa169efaf066b1ac3583c8f65cb4c2254832d36
MD5 28cc62ede49bffe8c46e77b21b8372ae
BLAKE2b-256 cfc8274570813cc7a4becbfdef94d4dd5c77eeda479aa506108ba4818c44daed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page