By default, AsyncLimiter allows for 'bursting'. If capacity has not been used for a while, multiple requests can enter the limited section in quick succession until the capacity is exhausted. The maximum burst size is equal to the max_rate value.
To disable bursting and enforce a strict interval between entries, set the max_rate to 1 and set the time_period to your desired minimum interval.
# Allow bursting (default behavior)
# If max_rate is 4, the first 4 tasks can run immediately
limiter = AsyncLimiter(4, 8)
# No bursts: allow entry exactly every 1.5 seconds
limiter = AsyncLimiter(1, 1.5)