Async Support¶
Added in version 2.1.
A new namespace limits.aio
is available which mirrors the original
limits.storage
and limits.strategies
packages.
The following async storage backends are implemented:
In-Memory
Redis (via coredis or redis-py. Refer to
limits.aio.storage.RedisStorage.implementation
for details on selecting the dependency)Memcached (via emcache)
MongoDB (via motor)
Etcd (via aetcd)
Quick start¶
This example demonstrates the subtle differences in the limits.aio
namespace:
from limits import parse
from limits.storage import storage_from_string
from limits.aio.strategies import MovingWindowRateLimiter
redis = storage_from_string("async+redis://localhost:6379")
moving_window = MovingWindowRateLimiter(redis)
one_per_minute = parse("1/minute")
async def hit():
return await moving_window.hit(one_per_minute, "test_namespace", "foo")
Refer to Async Storage for more implementation details of the async storage backends, and Async Strategies for the async rate limit strategies API.