Ошибки ECONNRESET и SOCKET HANG UP при попытке отправить запросы в API Google с node.js - PullRequest
0 голосов
/ 02 мая 2020

Я использую Google's node.js API Library для отправки данных о товарах в Google Merchant Center. Примерно в 30% запросов я получаю следующие ошибки:

Я думаю, что причина может заключаться в том, что запросы отправляются быстро и квота пределы API нарушены. Какой метод можно использовать для ограничения количества запросов к API? Я пытался

setTimeout(() => { null }, 3000);

каждый раз перед отправкой запроса API, но похоже, что он ничего не меняет.

1 Ответ

0 голосов
/ 02 мая 2020

Вот решение этой проблемы. Я добавил метод ожидания, который возвращает Promise.

while((batchOffset + batchSize)  <= products.length) {

      const entries = [];
      const productsBatch = products.slice(batchOffset, (batchOffset+batchSize));

      // Wait between API calls to avoid hitting Google API quota limits 
      await this.wait(100);

      // Send a batch of n products to Google content API
      contentApi.products.custombatch(
        {
          requestBody: {
            entries: entries,
          },
        },
        (err, res) => {
          // handle err and response
          if (err !== null || res.status !== 200) {
            this.logger.log(
              'error',
              '...'
            );
          } else {
            this.logger.log(
              'info',
              '...',
            );
          }
        },
      );

      batchOffset+=batchSize;

}


......

private wait(ms: number) {
    return new Promise(resolve => setTimeout(resolve, ms))
  }
...