Node.JS aws -sdk получает ошибку «Зависание сокета» - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь получить информацию о ценах на машины AmazonEC2, используя пакет «@ aws -sdk / client-pricing-node».

Каждый раз я буду отправлять запрос на получение информации о ценах, обрабатывать его и отправлять запрос снова, пока не будет получена вся информация (NextToken больше не будет). Ниже приведен мой код.

const {
  PricingClient,
} = require('@aws-sdk/client-pricing-node/PricingClient');

const {
  GetProductsCommand,
} = require('@aws-sdk/client-pricing-node/commands/GetProductsCommand');

const agent = new https.Agent({
  maxSockets: 30,
  keepAlive: true,
});

const pricing = new PricingClient({
  region: "us-east-1",
  httpOptions: {
    timeout: 45000,
    connectTimeout: 45000,
    agent,
  },
  maxRetries: 10,
  retryDelayOptions: {
    base: 500,
  },
});

const getProductsCommand = new GetProductsCommand( {  ServiceCode: 'AmazonEC2', });

async function sendRequest() {
  let result = false;
  while (!result) {
    try {
      const data = await pricing.send(getProductsCommand);
      result = await handleReqResults(data);
    } catch (error) {
      console.error(error);
    }
  }
}

async function handleReqResults(data) {

    // some data handling code here
    // ...

  //return false when there is "NextToken" in the response data 
  if (data.NextToken) {
    setNextToken(data.NextToken);
    return false;
  }
  return true;
}

Код будет выполняться некоторое время (переменное время), а затем остановится со следующей ошибкой:

{ Error: socket hang up
    at createHangUpError (_http_client.js:332:15)
    at TLSSocket.socketOnEnd (_http_client.js:435:23)
    at TLSSocket.emit (events.js:203:15)
    at TLSSocket.EventEmitter.emit (domain.js:448:20)
    at endReadableNT (_stream_readable.js:1145:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)
  code: 'ECONNRESET',
  '$metadata': { retries: 0, totalRetryDelay: 0 } }

Я пытался запустить его на экземпляр виртуальной машины GCP, и такой проблемы не было. Но проблема возникает, когда я запускаю его на своем локальном компьютере.

Кто-нибудь знает, как решить эту проблему?

(Кстати: моя версия узла - v10.20.1)

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