我已将 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 触发器时不会更改。
将以下代码移至 Lambda 函数处理程序中:
lgc = lgc.fetch_env()
所以,代码应该是:
import lambdaLogicClass from “./lambdaLogicClass”
def handler(event):
lgc = lgc.fetch_env()
lgc.run_process(event)
就目前情况而言,您的 lgc 变量只会在冷启动期间初始化。任何后续的热启动都将重用之前的 Lambda 调用的全局变量。