Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
Ratelimit
✓ from upstash_ratelimit import Ratelimit
✗ from upstash_ratelimit import Ratelimiter
Class name is Ratelimit, not Ratelimiter.
SlidingWindow
✓ from upstash_ratelimit import SlidingWindow
Correct import path.
FixedWindow
✓ from upstash_ratelimit import FixedWindow
Correct import path.
TokenBucket
✓ from upstash_ratelimit import TokenBucket
Correct import path.
Initialize Upstash Redis client and create a rate limiter using sliding window algorithm.
import os
from upstash_ratelimit import Ratelimit, SlidingWindow
from upstash_redis import Redis
# Initialize Redis client
redis = Redis(url=os.environ.get('UPSTASH_REDIS_REST_URL', ''), token=os.environ.get('UPSTASH_REDIS_REST_TOKEN', ''))
# Create ratelimit instance
ratelimit = Ratelimit(
redis=redis,
limiter=SlidingWindow(max_requests=10, window=10), # 10 requests per 10 seconds
prefix="ratelimit"
)
# Check limit
result = ratelimit.limit("user_id_123")
print(result.allowed) # True or False
print(result.remaining) # remaining requests
Errors
Common errors & fixes
upstash_ratelimit.exceptions.RatelimitError: No redis client provided
Ratelimit instantiated without a redis argument.
fixPass a Redis instance to the Ratelimit constructor: `Ratelimit(redis=redis, ...)`
ModuleNotFoundError: No module named 'upstash_redis'
upstash-redis is not installed.
fixInstall it: `pip install upstash-redis`
AttributeError: 'RatelimitResponse' object has no attribute 'passed'
Using incorrect attribute name for limit result.
fixUse `.allowed` or `.remaining` instead of `.passed`.
Upgrade
Version history
1.1.0latest on PyPI · released May 16, 2024
Audit
Dependencies
upstash-redisrequiredRequired for Redis client. Both sync and async are supported.