在我们的堆栈中,我们使用了许多分离的 lambda 函数(每个函数都作为 HTTP 或 WS 处理程序),并且每个函数都导入大小相当大的实用程序。这些必需的实用程序还处理与外部实体(缓存和数据库)的连接,因此每次我们调用该函数时,都会有一个持续 1 到 2 秒的初始化阶段。由于不同的函数有分离的运行时(即使我们使用到同一个数据库的连接并到处缓存),init 阶段发生在每个函数的分离中。如果它们需要相同的依赖关系,这是否可能(可能与 lambda 层)在许多函数之间共享“初始化阶段”?比如基于下面的js代码:
import utils from "../common"
const db = utils.get_db()
export const handler_A = async (event) => {
// do sth with db here
}
export const handler_B = async (event) => {
// do sth with db here
}
假设我们的执行顺序如下: handler_A ----> handler_A ----> handler_B
在这种情况下,第二次执行 forhandler_A
应该能够db
从第一次执行中重用,但这不适用于handler_b
.
这是否可以重用“初始化阶段”,或者换句话说,如果在 handler_B 之前几秒钟使用了 handler_A,则保持 handler_B 的热启动?任何帮助将不胜感激!