让lambdas保持温暖,并用一个简单的装饰器监视冷启动

lambda-warmer-p的Python项目详细描述


PyPI versionLicense: MIT

Lambda加热器PY:处理AWS Lambda冷启动

lambda-warmer-py包包含一个decorator,可以轻松地将aws lambda cold的阻力降到最低 开始。只是…

  1. 将lambdas包装在@lambdawarmer.warmer装饰器中并
  2. 每5分钟ping一次lambda

而且你的感冒会大大减轻。

配置选项也可用于…

  • 允许保持许多concurrentlambdas warm
  • 发送CloudWatch metrics 通过lambda函数名跟踪冷启动和热启动的次数

暖化逻辑是python对jspackagelambda-warmer的一种改编。在他的网站here上阅读更多关于这种方法的背景知识 以及lambda优化的一些最佳实践。

*除了支持cloudwatch度量之外,参数化方面还有一些小的差异。见configuration

安装

pip install lambda-warmer-py

使用Lambda加热器

基础知识

<>将LAMBDA保暖器加入到现有的LAMBDAS中只需要增加一个装饰器即可。

importlambdawarmer@lambdawarmer.warmer()defyour_lambda_function(event,context):pass

同时升温

为了利用并发选项,包将多次调用lambda。这意味着 lambda需要以下权限

-Effect:AllowAction:lambda:InvokeFunctionResource:[your-lambdas-arn]

启用coldstart/warmstart cloudwatch度量

为了让lambda hermer跟踪冷启动和热启动指标,lambda执行角色将需要权限 向cloudwatch发送度量数据。所需的策略操作是

-Effect:AllowAction:cloudwatch:PutMetricData

暖羊

创建一个CloudWatch Rule 定期直接调用lambda并将以下json作为事件传递

{"warmer":true,"concurrency":(int,defaultsto1)}

可以通过重写装饰器中的参数来更改warmerconcurrency名称。见 configuration了解详细信息。

配置

lambda加热器是通过@warmer装饰器的函数参数配置的。需要以下几点…

flag (string, default = 'warmer')

用于指示它是预热事件的字段的名称。

concurrency (string, default = 'concurrency')

用于设置要调用和保持温暖的并发lambda数的字段的名称。

delay (int, default = 75)

并发预热调用应休眠的毫秒数。这有助于避免交付不足 并发目标。

send_metric (bool, default = False)

cloudwatch是否会在每次调用时发送冷/热启动次数的度量。指标名称 是ColdStartWarmStart,记录在LambdaWarmer命名空间下,并且可以按lambda函数名进行筛选。

示例:温暖配置覆盖

使用替代的事件和延迟配置非常简单。

@lambdawarmer.warmer(flag='am_i_a_warmer',concurrency='how_many_lambdas',delay=150)defyour_lambda_function(event,context):pass

此实现将预期形式的事件

{"am_i_a_warmer":true,"how_many_lambdas":(int)}

所有并发执行将延迟150毫秒。

示例:发送度量

如果您想跟踪暖/冷启动次数的指标,请在decorator中激活该功能。

@lambdawarmer.warmer(send_metric=True)defyour_lambda_function(event,context):pass

note:此实现中excluded但可以在js版本中找到的配置选项是

  • test:在unittests中使用mock/fakes而不是标记的调用来处理测试
  • log:导入的python包的日志级别应该通过stdliblogging模块处理。
  • correlationId。因为我们在python中并且总是设置为 当前lambda的aws_request_id字段是在原始lambda-warmer包中推荐的。

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

推荐PyPI第三方库


热门话题
文件名的java正则表达式限制名称大小和文件扩展名   Mac上的java Android SDK:jspawnhelper意外退出   java SQL Server 2000到Oracle 12c重音字符   在Java中快速比较大数据集中的值和小数据集中的值   java在代码中的许多地方保留对对象的引用   Java规范中私有内部类的jvm访问标志与反射API不一致?   比较2个int数组中匹配的数字   java Apache Commons数学简化回归:get prediction stderr   安卓 Java SDK管理器因命令行输出中的“flashplayerplugin”而崩溃   JavaSQLite:关闭DB时必须关闭游标吗?   泛型Java设计抽象类声明示例说明   java应用程序在添加片段时崩溃   如何在java中使用注释为字段加载值