使用botocore和aiohttp的aws服务异步客户端
aiobotocore-botorange的Python项目详细描述
使用botocore和aiohttp/asyncio的Amazon服务异步客户端。
这个库的主要目的是支持amazon s3 api,但是其他服务 应该可以工作(可能需要一些小的修正)。现在我们已经测试了 只有s3的上传/下载api,其他用户报告sqs和dynamo 服务也起作用。更多的测试即将到来。
安装
$ pip install aiobotocore
基本示例
importasyncioimportaiobotocoreAWS_ACCESS_KEY_ID="xxx"AWS_SECRET_ACCESS_KEY="xxx"asyncdefgo(loop):bucket='dataintake'filename='dummy.bin'folder='aiobotocore'key='{}/{}'.format(folder,filename)session=aiobotocore.get_session(loop=loop)asyncwithsession.create_client('s3',region_name='us-west-2',aws_secret_access_key=AWS_SECRET_ACCESS_KEY,aws_access_key_id=AWS_ACCESS_KEY_ID)asclient:# upload object to amazon s3data=b'\x01'*1024resp=awaitclient.put_object(Bucket=bucket,Key=key,Body=data)print(resp)# getting s3 object properties of file we just uploadedresp=awaitclient.get_object_acl(Bucket=bucket,Key=key)print(resp)# delete object from s3resp=awaitclient.delete_object(Bucket=bucket,Key=key)print(resp)# list s3 objects using paginatorpaginator=client.get_paginator('list_objects')asyncforresultinpaginator.paginate(Bucket=bucket,Prefix=folder):forcinresult.get('Contents',[]):print(c)# get object from s3response=awaitclient.get_object(Bucket=bucket,key=key)# this will ensure the connection is correctly re-used/closedasyncwithresponse['Body']asstream:bytes=awaitstream.read()loop=asyncio.get_event_loop()loop.run_until_complete(go(loop))
运行测试
确保安装了开发需求和amazon密钥, 可通过环境变量访问机密:
$ cd aiobotocore $ export AWS_ACCESS_KEY_ID=xxx $ export AWS_SECRET_ACCESS_KEY=xxx $ pip install -Ur requirements-dev.txt
执行测试套件:
$ py.test -v tests
更改
0.2.3(xx xx-xx-xx)
0.2.2(2017-03-07)
- 设置aiobotocore。uuuu all_uuu用于*导入121(感谢@graingert)
- 在head_object response_132中修复ETag
0.2.1(2017-02-01)
- 通过botocore 115规范化头并处理重定向(感谢@fedorof)
0.2.0(2017-01-30)
- <添加代理的支持(谢谢))
- 删除aioconfig verify_ssl connector_arg,因为这是由 创建客户机验证参数
- 删除aioconfig limit connector_arg,因为这现在由处理 通过configmax_pool_connections属性(注意默认值为10)
0.1.1(2017-01-16)
- BOTOCORE更新到1.5.0版
0.1.0(2017-01-12)
- 将超时传递给aiohttp.request以强制读取超时86(感谢@vharitonsky) (由于读取超时启用更改,升级到下一个语义版本)
0.0.6(2016-11-19)
- 增加了简单响应的执行57(感谢@rymir)
- Botocore更新到1.4.73 74版(感谢@VAS3K)
0.0.5(2016-06-01)
- 初始α释放