2016-03-22 4 views
0

У меня есть список из 7000 пользователей.Ошибка ENFILE из-за создания слишком большого количества запросов Axios

Для каждого из 7000 пользователей мне нужно сделать запрос GET.

Мой код работает, но я получаю следующее сообщение об ошибке для многих запросов:

"ENFILE" 
"ENFILE" 
"connect" 
"10.10.12.72" 
80 

Я считаю, что нужно задушить запросы, но не знаю точно, как это сделать.

Вот код:

пользователей представляет собой массив из 7000 записей.

users.forEach((user) => { 
    axios({ 
     url: getUserRolesEndpoint + `${user.userId}`, 
     method: 'get', 
     timeout: 10000, 
    }) 
    .then((response) => { 
     // I do something with the response 
    }); 
    }); 

ответ

0

Похоже libary 'ограничителем' фиксируется мой вопрос:

const RateLimiter = require('limiter').RateLimiter; 
const limiter = new RateLimiter(5, 'second'); 

users.forEach((user) => { 
    limiter.removeTokens(1, (errd, remainingRequests) => { 
     axios({ 
     url: getUserRolesEndpoint + `${user.userId}`, 
     method: 'get', 
     timeout: 10000, 
     }) 
     .then((response) => { 
      // I do something with the response 
     }); 
    }); 
}); 
Смежные вопросы