ioredis и настройка облачных функций Google - PullRequest
0 голосов
/ 25 ноября 2018

В настоящее время у меня есть облачная функция Google (написана в машинописном тексте), которую мне нужно подключить к кешу redis (я использую redis как гибрид коллекции очередей / метрик), чтобы ставить в очередь задания для моих работников, которые работают в других местах.

Все работает, когда я захожу в свой кэш redis, все работает, как я ожидал, конвейер работает нормально.Но я получаю тысячи таких ошибок: [ioredis] Unhandled error event: Error: read ECONNRESET

Они, кажется, не влияют на выполнение облачной функции, но они непрерывны и влияют на журналы всех моих облачных функций, так как все они импортируются вмой index.ts.Я отчаянно нуждаюсь в тех, кто разбирается в этом, потратил дни, пытаясь исправить все, что я могу найти в Интернете.

Для справки, я использую Azure Redis Cache (премиум) и когда я подключаюсь через 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 Cache и настройками SSL.Это было самое близкое, что я мог найти к моей проблеме, но ответ там не работал для меня. проблема ioredis

Примечательно, что я не сталкиваюсь с этой проблемой за пределами среды облачных функций Google.Я запускаю рабочих на Google Compute Engine, они прекрасно подключаются к Redis, вытаскивают элементы из очереди и выполняют свою работу.Повторим, все работает, но это явно нежелательно: сообщение об ошибке стека-драйвера

...