BOTO3的修饰机制,允许自动修饰任何和所有BOTO3客户端和资源

botoinator的Python项目详细描述


Botoinator

一个python模块,允许将decorators声明为添加到boto3方法中

概述

Botoinator允许您在类或对象级别上对Boto3方法应用修饰符。它通过boto3会话工作,允许您将decorators应用于特定会话的所有客户机/资源,或应用于boto3的特定客户机/资源。默认会话。

生成的文档

您可以在这里看到pydoc生成的文档

用法

将属于客户端对象的方法修饰为单个会话

session=boto3.session.Session()session.register_client_decorator(service_name,method_names,decorator)

参数:

在单个会话中修饰属于资源对象的方法

session=boto3.session.Session()session.register_resource_decorator(service_name,resource_name,method_names,decorator)

参数:

为在任何会话中创建的客户端修饰方法

boto3.session.Session.add_client_decorator(service_name,method_names,decorator)

参数:

在所有会话中修饰资源的方法

boto3.session.Session.add_resource_decorator(service_name,resource_name,method_names,decorator)

参数:

注销装饰程序,以便将来的客户机不会对其方法进行装饰。已向Methods注册装饰者的客户将保留其装饰。

session=boto3.session.Session()session.unregister_client_decorator(service_name,method_names)

参数:

取消注册装饰程序,以便将来的资源不会对其方法进行装饰。已将装饰者注册到方法的资源将保留其装饰。

session=boto3.session.Session()session.unregister_resource_decorator(service_name,resource_name,method_names)

参数:

为在任何会话中创建的客户端取消修饰方法。

boto3.session.Session.remove_client_decorator(service_name,method_names)

参数:

在所有会话中取消装饰资源的方法

boto3.session.Session.remove_resource_decorator(service_name,resource_name,method_names)

参数:

BOTO3方便方法

如果您使用boto3.client()boto3.resource()方法,这些方法将创建一个默认会话对象,该对象位于boto3.default\u session中。 更改默认会话的decorators需要使用这里记录的register_xxxunregister_xxx方法。 例如boto3.default_session.register_client_decorator(…)

在单个boto3会话上装饰create_bucket()的示例

importboto3importbotoinatorfrommotoimportmock_s3,mock_sqs""" This is our decorator that we will apply to boto3 methods """defmyDecorator(func):deftest_decorator(*args,**kwargs):setattr(test_decorator,'testValue',True)# Add this attribute to the returned function for testingreturnfunc(*args,**kwargs)returntest_decorator@mock_s3deftestRegisterToClient():"""  Test registering a decorator to a single boto3 session  """# Create a boto3 sessions=boto3.session.Session()# Register the create_bucket() method to use our decorator for this sessions.register_client_decorator('s3','create_bucket',myDecorator)# Now create our client as we normally wouldclient1=s.client('s3')# Now we can see that create_bucket() was decorated by testing the attribute we addedclient1.create_bucket(Bucket='foo')asserthasattr(client1.create_bucket,'testValue')# We can also see that this only applies to calls made by the session we registered by creating a new session through boto3.client() and not registering a decoratorclient2=boto3.client('s3')client2.create_bucket(Bucket='foo')# Now we can see that client.create_bucket() is not decoratedassertnothasattr(client2.create_bucket,'testValue')# Remove the decorator from the sessions.unregister_client_decorator('s3','create_bucket')# Now create a new client on the same session we created at firstclient3=s.client('s3')client3.create_bucket(Bucket='bar')# The session should no longer be decorating methods for new clientsassertnothasattr(client3.create_bucket,'testValue1')

查看项目文档目录中的更多示例

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Hibernate:jpamodelgen生成java而不是类   java如何在第二次活动结束后显示广告?   javascript如何在linux或windows上将java导出到jar   java One ArrayList添加了2个不同的选项   AmazonWeb服务如何在java中使用AWS Textract检索pdf中存在的表   java为什么RecycleView中的水平项在单击时不起作用?   java计算如果存在映射   java在捕获的组上应用正则表达式   如何使用Java在MySQL的同一个表中插入来自不同类的值   java字符串中最常见的字母(大写和小写)   Spring SessionBean实例正在由java中的多个用户共享   使用Spring Boot将@WebInitParam中的值外部化   java一创建线程就开始执行(多线程)   java是安卓所需的系统权限。意图行动给你打电话?