AWS python lambda 返回相同的结果

问题描述 投票:0回答:1

我已将 python 代码部署到 aws lambda,无论我触发多少次,即使使用不同的输入,我都会得到相同的响应。

这是我的代码:

处理程序.py

import lambdaLogicClass from “./lambdaLogicClass”

lgc = lgc.fetch_env()
def handler(event):
  lgc.run_process(event)

lambdaLogicClass.py

Class lambdaLogicClass:
  def __init__(self, env_value):
    self.x = env_value
    self.y = {}

  @classmethod
  def fetch_env(cls):
   return cls(env_value=os.getenv(env_key)

  def run_process():
    #some_logic

我从 lambda 中获得相同的值,它调用我的类中定义的 run_process 方法。我调试并检查了每次运行后,类变量 x 在下次运行 lambda 触发器时不会更改。

python aws-lambda init class-method
1个回答
0
投票

将以下代码移至 Lambda 函数处理程序中:

lgc = lgc.fetch_env()

所以,代码应该是:

import lambdaLogicClass from “./lambdaLogicClass”

def handler(event):
  lgc = lgc.fetch_env()
  lgc.run_process(event)

就目前情况而言,您的 lgc 变量只会在冷启动期间初始化。任何后续的热启动都将重用之前的 Lambda 调用的全局变量。

请参阅了解 AWS Lambda 中的容器重用

© www.soinside.com 2019 - 2024. All rights reserved.