我正在尝试使用serverless
框架创建应用。
所有功能在我的本地计算机上都能正常工作。
但是远程计算机(Lambda)给出以下错误消息。 (这需要30秒)
{
"message": "Endpoint request timed out"
}
代码大小为37.5 MB
,实例内存大小为3008 MB
。
任何建议或建议将不胜感激。预先谢谢你
答案 0 :(得分:0)
我通过设置为callbackWaitsForEmptyEventLoop = false
解决了我的问题。
默认情况下,在NodeJS Lambda函数中调用callback()函数不会结束该函数的执行。它将继续运行,直到事件循环为空。当您坚持打开数据库连接时,会发生NodeJS Lambda函数在调用回调后继续运行的常见问题。您尚未发布任何代码,因此我无法提供具体建议,但是您需要确定是否要在代码中打开数据库连接或类似的内容。
这是documentation关于callbackWaitsForEmptyEventLoop行为的说法:
callbackWaitsForEmptyEventLoop
默认值为true。此属性仅在修改 回调的默认行为。默认情况下,回调将等待 直到Node.js运行时事件循环为空,然后冻结 处理并将结果返回给调用者。你可以设置这个 属性设置为false以请求AWS Lambda尽快冻结该过程 调用回调后,即使事件中有事件 环。 AWS Lambda将冻结该流程,任何状态数据以及 Node.js事件循环中的事件(事件中所有剩余事件 接下来调用Lambda函数以及AWS时处理的循环 Lambda选择使用冻结过程。有关更多信息 回调see Using the Callback Parameter。