Closed jorisw closed 2 years ago
promise-ratelimit actually works well for this.
Thanks, mind sharing an example?
On Sat, Dec 11, 2021 at 10:09 AM Joris W @.***> wrote:
promise-ratelimit https://www.npmjs.com/package/promise-ratelimit actually works well for this.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/phillbaker/digitalocean-node/issues/37#issuecomment-991676471, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAXCKMOOXQQKLWLZL3NZTDUQNSS3ANCNFSM5ILU4LHQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
As simple as:
const digitalOcean = require("digitalocean");
const promiseRateLimit = require("promise-ratelimit");
const digitalOceanClient = digitalOcean.client(process.env.DIGITALOCEAN_TOKEN);
const throttleRequests = promiseRateLimit(1000);
try {
// Make sure 1000ms have passed since last request
await throttleRequests();
// List droplets
const apiDroplets = await digitalOceanClient.droplets.list(1, 200);
} catch (e) {
console.error(e);
}
When my code removes a bunch of droplets at the same time, I get 429 errors like this one:
Some client libraries like ccxt (a crypto currency exchange client) have built-in throttle queues that adhere to rate limiting, preventing 429 errors. Suggestion to add this to this client library.