Ошибка Космос БД при подключении ETIMEDOUT при многократном вызове - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть массив предметов (для тестирования я использовал около 250). Внутри каждого предмета есть идентификатор, который я пытаюсь вызвать из CosmosDB. Я делаю это в простом for-l oop

for (i = 0; i < arr.length; k++) {
    var func = find(context, arr[i].id)
}

В пределах find я просто вызываю cosmosDB для чтения файла. Это хорошо работает на отдельных предметах, или если я использую маленькие массивы (20-50), однако с большими массивами я получаю следующую ошибку:

{ FetchError: request to mycosmossite/docs failed, reason: connect ETIMEDOUT 
  message:
   'request to mycosmossite/docs failed, reason: connect ETIMEDOUT',
  type: 'system',
  errno: 'ETIMEDOUT',
  code: 'ETIMEDOUT',
  headers:
   { 'x-ms-throttle-retry-count': 0,
     'x-ms-throttle-retry-wait-time-ms': 0 } }

Я не уверен, почему это происходит. Я также получаю это при использовании request-promise время от времени, но если я пытаюсь снова, не меняя ничего, это часто работает. Я не уверен, если это связано

Exception: RequestError: Error: connect ETIMEDOUT 

Может кто-нибудь предложить решение, чтобы я мог работать с большими массивами здесь? Это проблема удушения?

Спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Я поддерживаю Azure Cosmos DB JS SDK. Используете ли вы SDK для этих звонков? Мы не выбрасываем ETIMEDOUT нигде внутри SDK, поэтому он пузырится со слоя NodeJS или Browser. Возможно, вы перегружаете сетевой стек или событие l oop, открывая множество нисходящих соединений и обещаний. Как написано в настоящее время, ваш код откроет arr.length количество одновременных запросов к серверу. Вы имели в виду await результат каждого запроса? Пример:

for (i = 0; i < arr.length; k++) {
    var func = await find(context, arr[i].id)
}

Вы также можете пакетировать запросы, используя пакет типа p-map и используя параметр параллелизма

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...