用于生成aws lambda处理程序的有用装饰器的集合

lambda-decorators的Python项目详细描述


VersionDocsBuildSayThanks

用于生成aws lambda处理程序的有用装饰器的集合

lambda_decorators是用于编写python的一组有用的decorator AWS Lambda的处理程序。他们允许你 避免使用boiler plate来处理常见的事情,比如cors头、json序列化, 等

快速示例

# handler.pyfromlambda_decoratorsimportjson_http_resp,load_json_body@json_http_resp@load_json_bodydefhandler(event,context):return{'hello':event['body']['name']}

当部署到API网关后面的lambda时,curl d:

$ curl -d '{"name": "world"}' https://example.execute-api.us-east-1.amazonaws.com/dev/hello
{"hello": "world"}

安装

如果您使用the serverless framework 我建议使用 serverless-python-requirements

sls plugin install -n serverless-python-requirements
echo lambda-decorators >> requirements.txt

或者如果对aws lambda使用其他部署方法,您可以下载 整个模块,因为它只有一个文件。

curl -O https://raw.githubusercontent.com/dschep/lambda-decorators/master/lambda_decorators.py

包含的装饰器:

lambda_decorators包含以下修饰符以避免样板文件 对于将aws lambda与python一起使用时的常见用例。

有关特定用法的详细信息和example 对于更多的用例。这个库也可以作为如何编写 用作lambda中间件的装饰器。有关 使用decorators作为lambda的中间件。

自己写

lambda_decorators包括使构建自己的装饰器的实用程序 更容易的。beforeafteron_exception装饰器 可以应用于您自己的函数,将它们转换为 处理程序。例如:

importloggingfromlambda_decoratorsimportbefore@beforedeflog_event(event,context):logging.debug(event)returnevent,context@log_eventdefhandler(event,context):return{}

如果你想做一个提供两个或更多 前/后/上的异常功能,您可以使用 LambdaDecorator

importloggingfromlambda_decoratorsimportLambdaDecoratorclasslog_everything(LambdaDecorator):defbefore(event,context):logging.debug(event,context)returnevent,contextdefafter(retval):logging.debug(retval)returnretvaldefon_exception(exception):logging.debug(exception)return{'statusCode':500}@log_everythingdefhandler(event,context):return{}

为什么

最初,我受到middy的启发 我喜欢用javascript。所以很自然,我想我想在python中有类似的东西 我也是。但当我想得更多的时候,当把函数看作是计算机时 单位,当使用python时,decorators 几乎都是中间件!因此,与其构建一个中间件引擎和一些中间件,不如 只是建立了一些有用的装饰和实用程序来建立它们。


Full API Documentation

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

推荐PyPI第三方库


热门话题
java为什么这一行是charg=(char)(br.read());被跳过?   java三重DES中的IV在哪里?   java Lombok注释不在Intellij idea下编译   java为什么我不能使用过滤器作为流中的最后一步   sqlite Java编译错误找不到符号方法next()   在Java中解析处理对int来说太大的数字   java摄像头不工作   java是“断言错误”好的做法?   java确定api请求是来自CURL还是POSTMAN?   JavaSpringMVC导航   java使单例模式代码更强大   当Java(解释器)区分大小写时,为什么Java编译器(javac)不区分大小写?   java注释字符串[]oneArr();vs字符串[][]twoArr();公告   java命名查询的利弊   java使用log4jweb在web应用程序中配置Log4j2。罐子   java正则表达式查找以开头和结尾的所有可能出现的文本~   java从字符串执行方法