为什么 AWS Lambda 在使用 Knex.js 时一直超时
Why AWS Lambda keeps timing out when using Knex.js
我有一个 AWS Lambda 函数,它使用 Knex.js NPM 模块连接到 RDS 实例。在我从数据库中获取数据并调用 callback()
函数后,AWS Lambda 不会退出,不会发回响应并会超时。
如果我console.log()
从数据库中看到数据的结果,这意味着从数据库中检索信息是成功的。
事实证明,默认情况下 AWS Lambda 将在终止函数执行之前等待事件循环为空。这意味着即使您调用 callback()
函数,AWS Lambda 也不会退出。要更改此行为,您需要将 callbackWaitsForEmptyEventLoop
设置为 false
。这告诉 AWS Lambda 退出,即使事件循环不为空,在本例中它是我们的数据库连接。
context.callbackWaitsForEmptyEventLoop = false;
我有一个 AWS Lambda 函数,它使用 Knex.js NPM 模块连接到 RDS 实例。在我从数据库中获取数据并调用 callback()
函数后,AWS Lambda 不会退出,不会发回响应并会超时。
如果我console.log()
从数据库中看到数据的结果,这意味着从数据库中检索信息是成功的。
事实证明,默认情况下 AWS Lambda 将在终止函数执行之前等待事件循环为空。这意味着即使您调用 callback()
函数,AWS Lambda 也不会退出。要更改此行为,您需要将 callbackWaitsForEmptyEventLoop
设置为 false
。这告诉 AWS Lambda 退出,即使事件循环不为空,在本例中它是我们的数据库连接。
context.callbackWaitsForEmptyEventLoop = false;