aioqiniu

Asynchronous Qiniu Cloud Storage client based on asyncio


Keywords
qiniu, asyncio, aiohttp, python
License
MIT
Install
pip install aioqiniu==1.3.1

Documentation

aioqiniu

aioqiniu是基于asyncioaiohttp的七牛云Python异步客户端库。

Install

$ sudo pip3 install aioqiniu

Requirements

  • Python >= 3.5
  • qiniu
  • aiohttp >= 3.4.0

Getting started

使用样例:获取文件元信息

import asyncio

import aioqiniu


async def main():
    async with aioqiniu.QiniuClient("MY_ACCESS_KEY", "MY_SECRET_KEY") as client:
        stat = await client.get_file_stat("BUCKET_NAME", "FILE_NAME")
        print(stat)


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

Documentation

直接在Python中通过help来查看aioqiniu的API文档。

更多API细节可查看注释中提供的七牛官方文档地址。

Tests

本项目使用pytest做单元测试,运行测试需要安装以下依赖

  • pytest
  • pytest-asyncio
  • pytest-incremental

运行下面的命令安装运行测试所需的依赖

$ sudo pip3 install pytest pytest-asyncio pytest-incremental

在该项目根目录下执行以下命令来运行测试

$ pytest

注意:部分测试需要设置环境变量QINIU_ACCESS_KEYQINIU_SECRET_KEY才会运行

Changelog

  • v1.3.0(2018-09-04)

    • QiniuClient 的初始化参数 client 更改为 httpclient

    • QiniuClientupload_dataupload_file 方法添加 mimetype 参数

    • 添加新模块 aioqiniu.exceptions,包含异常类 QiniuError,作为与七牛服务器交互产生的业务异常

    • 完善类型注释

    • 现在可以通过 .httpclient 来访问 QiniuClient 所使用的 aiohttp.client.ClientSession 的对象

    • 添加 close, __aenter__ 以及 __aexit__ 等方法,现在可以像类似 aiohttp 的 ClientSession 一样关闭 QiniuClient

      async with QiniuClient() as client:
          # do something
          pass
      async def use_qiniu_client():
          client = QiniuClient()
          # do something
          await client.close()
    • 修复 QiniuClient.rename_file 方法不可用的 bug

  • v1.2.0(2017-05-10)

    • aioqiniu.utils模块添加计算七牛etag相关的工具函数

      • get_stream_etag

        从一个流中读取数据并计算七牛etag

      • get_data_etag

        从字节码数据中计算七牛etag

      • get_file_etag

        从本地文件中读取数据计算七牛etag

    • QiniuClient添加从原始数据中计算token的一些相关方法,用于替代qiniu.Auth的相关功能

      • get_token

        根据原始数据生成token,同qiniu.Auth.token

      • get_token_with_data

        根据原始数据生成含已编码原始数据的token,同qiniu.Auth.token_with_data

    • 添加生成私有资源url的方法QiniuClient.get_private_download_url

  • v1.1.0(2017-05-05)

    • APIQiniuClient.get_encoded_entry_uri转移到新模块aioqiniu.utils中作为一个函数来使用

    • 添加批量操作的APIQiniuClient.batch

    • 添加直传本地文件的APIQiniuClient.upload_file

    • 更改QiniuClient.upload_data方法的参数名,使API调用更加方便

      • upload_token -> token
      • upload_host -> host
    • 更换QiniuClient.upload_dataAPI的datatoken的参数位置,调用更符合直觉,现在是这样调用

      await qiniuclient.upload_data(data, token, ...)
  • v1.0.0(2017-05-03)

    基于asyncioaiohttp的七牛云Python异步客户端库。

    支持以下API:

    • 查询、创建和删除空间
    • 查询空间绑定的域名列表
    • 查找、上传和删除文件
    • 拷贝、移动和重命名文件
    • 修改文件MIME类型信息
    • 设置文件的生命周期
    • 镜像回源预取
    • 第三方资源抓取
    • 其它主要是内部使用的API(非协程API,主要是生成token以及相关的数据格式)