2016-03-22 8 views
0

Ich habe eine Array-Liste von 7000 Benutzern.ENFILE-Fehler aufgrund zu vieler Axios-Anfragen

Für jeden der 7000 Benutzer muss ich eine GET-Anfrage machen.

Mein Code läuft, aber ich bin den folgenden Fehler für viele der Anfragen bekommen:

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

Ich glaube, ich brauche die Anfragen zu drosseln, aber nicht sicher, wie man das macht.

Hier ist der Code:

Benutzer ein Array von 7000 Einträgen ist.

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

Antwort

0

Sieht aus wie die Libary 'Limiter' mein Problem behoben:

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