0

当云函数实例终止时,如何关闭从云函数到 redis 内存存储的连接?(我相信关闭我需要调用redis.quit(),但我只是不知道什么时候,我不能在函数返回后立即关闭它们,因为函数实例可以被重用

因为我只是让连接保持打开状态,所以现在我收到“ECONNRESET”错误。

或者,如果这样的事情是不可能的:

process.on("exit", function(){//also process is not defined in cloud functions
    redisClient.quit();
});

在 redis 配置中指定超时的最佳选择是什么?(你如何在 gcp memorystore 中做到这一点?)

4

2 回答 2

3

当您的 Cloud Function 入口函数返回时,您的容器有资格被终止,恕不另行通知。

你有两个选择:

  • 在每次函数调用时打开和关闭连接
  • 使用连接池并管理与 Cloud Functions 的预期用途背道而驰的连接错误。

如果您的函数使容器保持温暖,那么带有错误处理的连接池“可能”会受益于错误处理和测试所有可能问题的不小的成本。Cloud Functions 应用程序应设计为“无状态”。尝试在 Cloud Functions 中的调用之间保持状态(连接、数据等)并不是一个好的策略。

我会使用选项#1 来设计我的系统。Cloud Functions 是“轻量级”的,意味着启动、快速完成任务并关闭。

于 2019-08-25T19:38:49.283 回答
1

Google Cloud Functions 中没有定义生命周期侦听器。每个云函数都需要尽快运行,并在完成处理后关闭它打开的所有资源。

于 2019-08-25T18:28:08.620 回答