1.0.0 • Published 11 months ago
promise-throttle-bucket v1.0.0
promise-throttle-bucket
Throttles a promise-returning function using the token-bucket algorithm.
Motivation
Many AWS APIs are throttled using the token-bucket algorithm. For instance, to prevent hitting the EC2 rate limits, the functions that call the AWS API can be wrapped and throttled.
Install
npm install promise-throttle-bucket
Usage
const pThrottleBucket = require('promise-throttle-bucket')
const throttledFn = pThrottleBucket(
describeEc2Instance,
{ max: 100, refill: 20 }
)
Promise.all([/* array of 150 instances */].map(throttledFn))
// After 0s, described instances 0-99
// After 1s, described instances 100-119
// After 2s, described instances 120-139
// After 3s, described instances 140-150
.then(function (instances) {
// Resolves after all the instances were described.
})
API
pThrottleBucket(fn, options)
Returns a throttled function.
fn
Type: Function
A function.
options
Type: object
options.max
Type: number
The maximum number of tokens in the bucket.
options.refill
Type: number
The number of refill tokens per interval in milliseconds.
options.interval?
Type: number
Default: 1000
The refill interval in milliseconds.
throttledFn
Type: function
The throttled version of fn
.
It resolves when fn()
resolves and rejects if it rejects.
The time it takes to settle depends on how many calls are in the queue and the throttling parameters.
1.0.0
11 months ago