gpt4 book ai didi

javascript - 在异步模式下使用时,redis createClient 上的 Google 云函数错误

转载 作者:行者123 更新时间:2023-12-02 19:43:57 25 4
gpt4 key购买 nike

我有一些使用redis内存存储的谷歌云功能,它给了我这个Redis连接:6379失败 - 在TCP上读取ECONNRESET。每次部署任何函数时都会出现 onread 错误。之前我通过创建一个单独的 util 文件并将它们包含在 CF 上来与所有函数共享 createClient() 代码,我认为这就是问题所在。但请注意,除了此错误之外,此 Redis 缓存正在按预期工作。

然后我尝试将 util 代码放入每个使用 redis 客户端创建客户端的谷歌云函数中。但当我每次部署任何云功能时,我仍然会从每个云功能中收到此错误。即使部署不使用redis的功能。

以下是我创建客户端的方法:

const bluebird = require('bluebird');
const redis = bluebird.promisifyAll(require('redis'));

const cache = redis.createClient({ port: REDIS_PORT, host: REDIS_HOST });

cache.on("error", (err) => {
console.log("API One - Redis cache error : " + err);
});


const list = async(data) => {
// Do something with data.
let cachedData;
if(cache.connected) {
await cache.hgetAsync(key); // Get cached Data.
}

// Do something with cached data if cachedData available.

if(cache.connected) {
await cache.hsetAsync(key, data); // Set Some Data.
}

return data;
}

module.exports = functions.https.onCall(list);

为什么我在每个云函数日志上都会看到此错误?

我得到的错误日志示例:

API One - Redis cache error : Error: Redis connection to <Ip Address>:6379 failed - read ECONNRESET
API Two - Redis cache error : Error: Redis connection to <Ip Address>:6379 failed - read ECONNRESET

最佳答案

您是否尝试在函数完成之前关闭redis连接?

redis 模块可能会在客户端的生命周期内激活后台回调,在函数终止之前不关闭连接可能会导致云函数终止时连接超时。确保所有异步操作在函数终止之前完成。

例如: Example

请告诉我这是否适合您。

关于javascript - 在异步模式下使用时,redis createClient 上的 Google 云函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57852071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com