ioredis和Google云功能配置

时间:2018-11-25 15:07:29

标签: azure redis google-cloud-functions azure-redis-cache ioredis

我目前有一个Google Cloud Function(用打字稿编写),我需要连接到Redis缓存(我将Redis用作队列/指标收集混合对象),以便为在其他地方运行的工人排队工作。

一切正常,当我涌入redis缓存时,一切都按预期工作,管道执行正常。但是我收到了成千上万的这些错误: [ioredis] Unhandled error event: Error: read ECONNRESET

它们似乎并没有影响云函数的执行,但是它们是不间断的并且会影响我所有云函数的日志,因为它们都已导入到我的index.ts中。对于那些对此有深刻见解的人,我感到绝望,花了几天的时间尝试着我可以在互联网上找到的所有问题进行修复。

作为参考,我使用的是Azure Redis缓存(高级),当我通过redis-cli连接时,我看到我认为是云功能可以成功启动连接并成功进行身份验证,按预期方式涌入队列,等等。

我有/utils/index.ts,这是我使用Redis的文件(无其他地方)。我这样导入:

import { _createRedis } from './redis';

const redis = _createRedis();

这是我使用redis的示例函数:

   export async function runExtractor(): Promise<any> {
  const data = await getActiveProfile();
  const pipeline = redis.pipeline();
  pipeline.lpush(`profile-extractor:jobs`, JSON.stringify((sanitizeSpec(data))));
  const result = await pipeline.exec();
  console.log('executed pipeline', { resultCount: result.length });
}

redis.ts内容:

    import * as Redis from 'ioredis';

// export const redis = new Redis(6380, 'MYCACHE.redis.cache.windows.net', { tls: true as any, password: 'PASSWORD' });

export const _createRedis = () => {
    return new Redis(6380, 'azuresucks.redis.cache.windows.net', { tls: true as any, password: 'PASSWORD' });;
}

如您所见,我一直在摆弄tls设置,将其导出为函数,但是没有任何效果。据我发现,这可能与ioredis与Azure Redis缓存和SSL设置的工作方式有关。这是我所能找到的最接近的问题,但那里的答案对我而言不起作用。 ioredis issue

值得注意的是,我在Google云功能环境之外没有遇到此问题。我正在Google计算引擎上运行这些工作程序,他们正好连接到Redis,并从队列中弹出项目并执行工作。重申一下,一切正常,但这显然是不可取的: stackdriver error reporting

0 个答案:

没有答案