Skip to content

CompositeLimiter / AsyncCompositeLimiter

Combine multiple limiters. An operation is allowed only if all limiters allow.

from limitpal import CompositeLimiter, TokenBucket, LeakyBucket

limiter = CompositeLimiter([
    TokenBucket(capacity=10, refill_rate=20),  # burst
    LeakyBucket(capacity=20, leak_rate=5),     # steady rate
])

if limiter.allow("user:123"):
    process_request()

Methods

Method Description
allow(key) True if all limiters allow
acquire(key, timeout) Block until all allow
limiters Tuple of underlying limiters

Use AsyncCompositeLimiter with async limiters for async allow/acquire.