Package: async-cow
Async Cow Python 七牛异步SDK本SDK基于官方SDK改造而成，但又对其进行了进一步封装，简化了相关操作
例如：1、不需要使用者关心token问题2、简化了相关导包和引用，并且保持接口一致3、实现了异步IO，引入协程概念，IO层面引入aiohttp，aiofiles等，使得本SDK适用于异步编程感谢您的星星❤[官方SDK请见]https://developer.qiniu.com/kodo/1242/python组织:QQ群: 614714752Installpython解释器版本要求：> 3.6# 标准安装pipinstallasync_cow# 从官方源安装，你能获取最新版本SDKpipinstallasync_cow-ihttps://pypi.python.org/simpleUsage初始化在你需要的地方fromasync_cowimportAsyncCow,ClientCowcow=AsyncCow(<ACCESS_KEY>,<SECRET_KEY>)client=ClientCow(<ACCESS_KEY>,<SECRET_KEY>)云存储桶操作b=cow.get_bucket(<BUCKET>)后面都用这个桶对象来操作。 它代表了<BUCKET>列出所有的bucketres=awaitb.buckets()列出一个bucket中的所有文件res=awaitb.list()这个方法还有 marker, limit, prefix这三个可选参数，详情参考官方文档bucket相关方法和用法和官方SDK同步上传file_path='/Users/admin/Desktop/123.jpg'withopen(file_path,'rb')asf:c=f.read()# 上传二进制流res=awaitb.put_data(key='AK47.jpg',# 上传后的文件名data=c)# 上传文件res=awaitb.put_file(key='AK472.jpg',# 上传后的文件名file_path=file_path)foriinres:print(i)删除，查看文件信息awaitb.stat('a')# 查看单个文件信息awaitb.delete('a')# 删除单个文件拷贝，移动（改名）经测试，只能在桶内copy和move这两个操作需要提供源文件名和目标文件名awaitb.copy('a','b')# 将'a' 拷贝至'b'awaitb.move('a','b')# 将'a' 改名为'b'有没有觉得比官方SDK容易使用多呢？异常在封装aiohttp操作时已经处理了大部分异常和重试过程，但仍会存在一些意外所以安全的做法是这样：try:awaitb.delete('a')exceptExceptionase:# 自行处理pass短信客户端操作# 获取一个短信客户端对象sms=cow.get_sms()创建，查看，编辑，删除签名awaitsms.createSignature(<signature>,<source>)awaitsms.querySignature()awaitsms.updateSignature(<id>,<signature>)awaitsms.deleteSignature(<id>)创建，查看，编辑，删除模版awaitsms.createTemplate(<name>,<template>,<type>,<description>,<signature_id>)awaitsms.queryTemplate(<audit_status>)awaitsms.updateTemplate(<id>,<name>,<template>,<description>,<signature_id>)awaitsms.deleteTemplate(<id>)发送短信，查看发送记录，查询发送计费条数awaitsms.sendMessage(<template_id>,<mobiles>,<parameters>)awaitsms.get_messages_info()awaitsms.get_charge_message_count(<start>,<end>,<g>,<status>)持久化# 获取持久化类对象p=cow.get_persistent_fop(<bucket>)文件持久化awaitp.execute(<key>,<fops>)直播连麦管理# 获取一个管理类对象r=cow.get_rtc_server()创建，获取，修改，删除appawaitr.create_app(<data>)awaitr.get_app()awaitr.update_app(<app_id>,<data>)awaitr.delete_app(<app_id>)用户列表，踢出用户awaitr.list_user(<app_id>,<data>)awaitr.kick_user(<app_id>,<data>,<user_id>)查看活跃房间awaitr.list_active_rooms(<app_id>)CDN管理# 获取cdn管理类对象cdn=cow.get_cdn_manager()刷新文件、目录awaitcdn.refresh_urls(<urls>)awaitcdn.refresh_dirs(<dirs>)# 同时刷新urls和dirsawaitcdn.refresh_urls_and_dirs(<urls>,<dirs>)预取文件列表awaitcdn.prefetch_urls(<urls>)查询宽带、流量数据# 宽带awaitcdn.get_bandwidth_data(<domains>,<start_date>,<end_date>,<granularity>)# 流量awaitcdn.get_flux_data(<domains>,<start_date>,<end_date>,<granularity>)获取日志下载链接awaitcdn.get_log_list_data(<domains>,<log_date>)修改证书awaitcdn.put_httpsconf(<name>,<certid>)域名管理# 获取域名管理类对象d=cow.get_domain_manager()创建，查看，删除域名awaitd.create_domain(<name>,<body>)awaitd.get_domain(<name>)awaitd.delete_domain(<name>)上线、下线域名awaitd.domain_online(<name>)awaitd.domain_offline(<name>)创建、修改证书awaitd.create_sslcert(<name>,<certid>,<forceHttps>)awaitd.put_httpsconf(<name>,<common_name>,<pri>,<ca>)账号客户端# 获取帐号客户端对象app=client.get_app()创建、获取管理客户端awaitapp.create_qcos_client(<app_uri>)awaitapp.get_qcos_client(<app_uri>)账号密钥# 获取帐号下应用的密钥awaitapp.get_app_keys(<app_uri>)# 获取帐号下可用的应用的密钥awaitapp.get_valid_app_auth(<app_uri>)当前账号的信息awaitapp.get_account_info()获得指定应用所在区域的产品信息awaitapp.get_app_region_products(<app_uri>)获取指定区域产品信息awaitapp.get_region_products(<region>)获得账号可见的区域的信息awaitapp.list_regions()创建、获得、删除当前账号的应用awaitapp.create_app(<args>)awaitapp.list_apps()awaitapp.delete_app(<app_uri>)资源管理客户端# 获取资源管理客户端对象q=client.get_qcos_client()创建、获取、删除服务组awaitq.create_stack(<args>)awaitq.get_stack(<stack>)awaitq.delete_stack(<stack>)启动、停止服务组awaitq.start_stack(<stack>)awaitq.stop_stack(<stack>)创建、获取、更新删除服务awaitq.create_service(<stack>,<args>)# 查看服务awaitq.get_service_inspect(<stack>,<service>)# 获得服务列表awaitq.list_services(<stack>)awaitq.update_service(<stack>,<service>,<args>)awaitq.delete_service(<stack>,<service>)启动、停止服务awaitq.start_service(<stack>,<service>)awaitq.stop_service(<stack>,<service>)扩容、缩容服务awaitq.scale_service(<stack>,<service>,<args>)创建、删除、扩容存储卷awaitq.create_service_volume(<stack>,<service>,<args>)awaitq.delete_service_volume(<stack>,<service>,<volume>)awaitq.extend_service_volume(<stack>,<service>,<volume>,<args>)查看、列出容器awaitq.get_container_inspect(<ip>)awaitq.list_containers()启动、停止、重启容器awaitq.start_container(<ip>)awaitq.stop_container(<ip>)awaitq.restart_container(<ip>)接入点# 列出接入点awaitq.list_aps()# 搜索接入点awaitq.search_ap(<mode>,<query>)# 查看接入点awaitq.get_ap(<apid>)# 申请接入点awaitq.create_ap(<args>)# 更新接入点awaitq.update_ap(<apid>,<args>)# 更新接入点端口配置awaitq.set_ap_port(<apid>,<port>,<args>)# 释放接入点awaitq.delete_ap(<apid>)自定义域名# 绑定自定义域名awaitq.publish_ap(<apid>,<args>)# 解绑自定义域名awaitq.unpublish_ap(<apid>,<args>)查看健康检查结果awaitq.get_ap_port_healthcheck(<apid>,<port>)调整后端实例配置awaitq.set_ap_port_container(<apid>,<port>,<args>)接入点端口# 临时关闭接入点端口awaitq.disable_ap_port(<apid>,<port>)# 开启接入点端口awaitq.enable_ap_port(<apid>,<port>)列出入口提供商awaitq.get_ap_providers()获取一次性代理地址awaitq.get_web_proxy(<backend>)测试桶测试首先从github clone项目到本地在项目中有example供测试，配置好main.py中的access_key、secret_key、bucket以及file_path参数后即可开始测试特别鸣谢：Hagworm以及七牛官方欢迎大佬指正！感谢您的星星❤