Git Product home page Git Product logo

aioqiniu's Introduction

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以及相关的数据格式)

aioqiniu's People

Contributors

jzqt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

aioqiniu's Issues

在tornado中使用会不会出现你说的与asyncio自有协程不兼容的问题?

七牛官方没有提供async的SDK,在pip上找到的。学习一个。

观察到使用了aiohttp,在你的另一篇文章中提到,由于使用了asyncio特有的协程,会出现一定的问题。「我自己在python3.6 + tornado4.5.1下复现了该问题」因此,该SDK是否不能直接在tornado中使用?

ps. 此前我在处理run_on_executor的时候碰到过类似的问题,run_on_executor的协程不能直接await,需要使用asyncio.futures.wrap_future装饰一层。与你的文章提到的用装饰器解决方案很类似。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.