无服务器框架:调用本地 python 函数响应缓慢



尝试使用以下方法在本地运行我的无服务器python lambda函数:

无服务器调用本地 -f 问候

该函数运行,但在调用处理程序之前似乎需要 2-5 秒。这对我来说是一个真正的问题,因为我希望使用invoke来支持本地测试。

我的处理程序非常简单:

def hello(event, context):
print('start')
body = {
"message": "Go Serverless v1.0! Your function executed successfully!",
"input": event
}
response = {
"statusCode": 200,
"body": json.dumps(body)
}
print('end')
return response

粗略时间:

  • 呼叫invokeprint(start):2-5秒
  • print(start)print(end):<0.5秒
  • 响应返回终端print(end):1s

由于我找不到任何其他有此问题的人,因此建议它与我的本地机器有关。不知道它可能是什么,甚至不知道从哪里开始查找故障。

无服务器:1.32(全局安装( 蟒蛇:3.6.5

这是无服务器框架(AWS SAM 框架太可悲了(的问题,而不是您的代码。不幸的是,Node.JS 和 Go 本地调用也遇到了同样的问题。

问题源于,不是代码的执行,而是在每次调用时,都需要重新配置执行环境,并且所需的时间取决于机器。

调用的一种替代方法是,就像我所做的那样,在lambda处理程序上编写API HTTP服务器包装器。在本地环境中,您可以使用包装器启动服务器并继续测试。

编辑:

这基本上是创建包装器需要做的:

  1. 从包装器启动您的 HTTP 服务器。
  2. 创建一个函数,用于将服务器上的请求转换为 Lambda 请求,以及将从 lambda 处理程序返回的响应转换为 HTTP 服务器响应的函数。
  3. 在包装器上,创建与serverless.yml中提到的路径对应的路径端点。使用步骤 2 中创建的函数将请求转发到处理程序。
  4. 从处理程序收到返回的结果后,将其映射到 HTTP 服务器响应,并将其作为响应发送给用户。

最新更新