尝试使用以下方法在本地运行我的无服务器 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
至 print(start)
: 2-5s print(start)
至 print(end)
: <0.5s print(end)
响应返回终端:1s 由于我找不到其他有此问题的人,因此建议它与我的本地机器有关。不知道它可能是什么,甚至不知道从哪里开始查找故障。
无服务器:1.32(全局安装)
python :3.6.5
最佳答案
这是无服务器框架的问题(遗憾的是 AWS SAM 框架),而不是您的代码。不幸的是,Node.JS 和 Go 本地调用遇到了同样的问题。
问题的根源不是代码的执行,而是每次调用时都需要重新配置执行环境的事实,而所需的时间取决于机器。
调用的一种替代方法是,正如我所做的那样,在您的 lambda 处理程序上编写一个 API HTTP Server 包装器。在本地环境中,您可以使用包装器启动服务器并继续测试。
编辑:
这基本上是您创建包装器所需要做的:
serverless.yml
中提到的路径相对应的路径端点。 .使用在步骤 2 中创建的函数将请求转发到您的处理程序。 关于python-3.x - 无服务器框架 : Invoke local python function is slow to respond,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52914527/