当云函数实例终止时,如何关闭从云函数到Redis 内存存储的连接?(我相信要关闭我需要调用 redis.quit(),但我不知道什么时候,而且我无法在函数返回后立即关闭它们,因为函数实例可以重用)
因为我只是让连接保持打开状态,所以现在我收到"ECONNRESET"错误。
或者,如果无法实现这样的事情:
process.on("exit", function(){//also process is not defined in cloud functions
redisClient.quit();
});
在redis 配置中指定超时的最佳选择是什么?(如何在 gcp 内存存储中执行此操作?
当您的云函数入口函数返回时,您的容器有资格被终止,恕不另行通知。
您有两种选择:
- 在每次函数调用时打开和关闭连接
- 使用连接池并管理与云函数的预期用途背道而驰的连接错误。
如果您的函数使容器保持温暖,则具有错误处理的连接池"可能"具有好处,而错误处理和测试所有可能的问题的成本不小。云函数应用应设计为"无状态"。尝试在 Cloud Functions 中的调用之间保持状态(连接、数据等)不是一个好的策略。
我会使用选项 #1 设计我的系统。云功能是"轻量级"的,这意味着启动,快速完成任务并关闭。