由于Axios请求过多而导致ENFILE错误

时间:2016-03-22 13:18:09

标签: javascript node.js axios

我有一个包含7000个用户的数组列表。

对于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
    });
  });

1 个答案:

答案 0 :(得分:0)

看起来像图书馆的限制者'解决了我的问题:

 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
       });
    });
 });