Class: TokenBucketRateLimiter
Defined in: rate-limit/limiter.ts:48
Token bucket rate limiter implementation
Uses the token bucket algorithm:
- Tokens are added at a constant rate (refill rate)
- Each request consumes tokens
- If insufficient tokens, request waits or fails
Example
const limiter = new TokenBucketRateLimiter({
requestsPerMinute: 60,
tokensPerMinute: 100000,
maxConcurrent: 5,
});
// Before making a request
await limiter.acquire(1000); // estimated tokens
try {
const result = await makeRequest();
limiter.reportUsage(actualTokens);
} finally {
limiter.release();
}
Implements
Constructors
Constructor
new TokenBucketRateLimiter(config?): TokenBucketRateLimiter;
Defined in: rate-limit/limiter.ts:75
Parameters
| Parameter | Type |
|---|---|
config | RateLimiterConfig |
Returns
TokenBucketRateLimiter
Methods
acquire()
acquire(estimatedTokens?): Promise<AcquireResult>;
Defined in: rate-limit/limiter.ts:93
Acquire permission to make a request
Parameters
| Parameter | Type | Default value |
|---|---|---|
estimatedTokens | number | 0 |
Returns
Promise<AcquireResult>
Implementation of
canAcquire()
canAcquire(estimatedTokens?): boolean;
Defined in: rate-limit/limiter.ts:190
Check if a request can be made immediately
Parameters
| Parameter | Type | Default value |
|---|---|---|
estimatedTokens | number | 0 |
Returns
boolean
Implementation of
getStats()
getStats(): RateLimiterStats;
Defined in: rate-limit/limiter.ts:149
Get current statistics
Returns
Implementation of
release()
release(): void;
Defined in: rate-limit/limiter.ts:123
Release a concurrent request slot
Returns
void
Implementation of
reportUsage()
reportUsage(tokens): void;
Defined in: rate-limit/limiter.ts:135
Report actual token usage
Parameters
| Parameter | Type |
|---|---|
tokens | number |
Returns
void
Implementation of
reset()
reset(): void;
Defined in: rate-limit/limiter.ts:165
Reset the rate limiter
Returns
void