python-3.x – 无服务器框架:调用本地python函数响应缓慢

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

serverless invoke local -f hello

该函数运行,但在调用处理程序之前似乎需要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

粗略的时间:

>调用invoke进行打印(开始):2-5s
>打印(开始)打印(结束):< 0.5s
>打印(结束)回到终端的响应:1s

由于我找不到任何其他人有这个问题,建议它与我的本地机器有关.不知道它可能是什么,甚至在哪里开始找错.

无服务器:1.32(全局安装)
Python:3.6.5

最佳答案
这是无服务器框架(AWS SAM框架太遗憾)的问题,而不是您的代码.不幸的是,Node.JS和Go本地调用遇到了同样的问题.

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

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

编辑:

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

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

转载注明原文:python-3.x – 无服务器框架:调用本地python函数响应缓慢 - 代码日志