【问题标题】:How to use single pymongo connection pool for all aws lambda requests如何为所有 aws lambda 请求使用单个 pymongo 连接池
【发布时间】:2021-08-27 01:29:36
【问题描述】:
我正在使用 aws lambda 函数和 API 网关以及 python 来处理 HTTP 请求。
我应该在每次请求后关闭 pymongo 连接还是有办法使用公共连接池?
如果我们为每个 5 个连接的 http 请求使用连接池,则 lambda 上的数千个请求将打开 5*1000=5000 个 mongodb 连接。
【问题讨论】:
标签:
python
mongodb
aws-lambda
aws-api-gateway
pymongo
【解决方案1】:
据我所知,不可能在函数调用之间传输状态,但您可以在 event_handler 函数之前初始化数据库连接,它将被重用于此特定函数实例的下一次热启动。如果所有请求同时启动,您可以限制同时的最大实例数,以强制重用已启动的函数。
这是一个link,它描述了一些最佳实践:
利用执行环境重用来提高性能
你的功能。在外部初始化 SDK 客户端和数据库连接
函数处理程序,并在 /tmp 中本地缓存静态资产
目录。由同一实例处理的后续调用
您的函数可以重用这些资源。这通过降低成本来节省成本
函数运行时间。