Функция aws -lambda с использованием nodejs 12 возвращает ошибку: «EMFILE, слишком много открытых файлов» - PullRequest
1 голос
/ 14 января 2020
  getCodeFromS3(s3DownloadClient, sourceBucket.key)
    .then(unzipCode)
    .then((filelist) => {
      return Promise.all([filelist, putObjects(filelist, s3UploadClient)]);
    })
    .then(putJobSuccess)
    .catch((err) => {
      putJobFailure(err);
    });

Вышеприведенная лямбда-функция возвращает ошибку «EMFILE, слишком много открытых файлов». Ошибка приходит при распаковке файлов. Как я могу это исправить в aws консоли?

1 Ответ

0 голосов
/ 18 апреля 2020

Один простой способ регулирования запросов, которые используют слишком много файловых дескрипторов или сокетов, - это использовать бутылочное горлышко .

Например:

const Bottleneck = require('bottleneck');

const limiter = new Bottleneck({
  // minTime: 33,
  maxConcurrent: 100,
});

const func = async (value) => {
  // do something, returns promise
};

const values = [...];

const wrapped_func = limiter.wrap(func);
const rc = await Promise.all(values.map(wrapped_func));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...