由于发出太多 Axios 请求而导致的 ENFILE 错误

ENFILE error due to making too many Axios requests

本文关键字:ENFILE 错误 于发出 太多 Axios 请求      更新时间:2023-09-26

我有一个包含 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
    });
  });

看起来库"限制器"解决了我的问题:

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