Ada*_*tan 6 scope node.js aws-lambda
我正在尝试利用Node.js的全局范围初始化一次数据库连接,并在调用lambda函数时使用初始化连接.
这可以节省大量资源和时间,因为打开数据库连接是一个漫长的过程:
// Global scope: Runs only once
const redis = require('redis');
const client = redis.createClient({ <HOST>, <PORT> });
// Function scope: runs per invocation
exports.handler = (event, context, callback) => {
do-something-with-redis
};
Run Code Online (Sandbox Code Playgroud)
可能会发生一些常见的连接错误
redis.create返回之前开始执行代码,因此使用未初始化的连接.什么是克服AWS Lambda函数使用的全局Redis连接的错误(初始化,超时和运行时)的正确方法?
Lambda 函数被设计为无状态的,所以我不知道是否有一个最佳答案。GitHub上有一条关于 Lambda 和 RDS 的评论非常有用,但它基本上适用。它提到答案取决于它将发出多少请求。
无论如何,这个答案或多或少是我会做的;尽管我更喜欢 Redis 库基于 Promise 的 API。作者通过使用回调等待连接打开后再尝试使用连接来处理未初始化连接问题。您提出的其他两个问题也在该答案中得到处理。基本上:if (err) callback(err)。
我的意思是,鉴于 GitHub 评论消息来自 AWS 的支持,您需要在处理程序内部建立连接,因此您也可以只那里执行此操作,直到您确定需要性能提升。
我意识到这并不能完全回答这个问题,但这个问题已经开放几天了,我很好奇。没有什么比在互联网上犯错更能找到正确答案的了……
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |