Skip to main content

In-memory rate limiter with sliding window and token bucket

Project description

philiprehberger-rate-limiter

Tests PyPI version License

In-memory rate limiter with sliding window and token bucket algorithms.

Installation

pip install philiprehberger-rate-limiter

Usage

Basic Rate Limiting

from philiprehberger_rate_limiter import RateLimiter, Algorithm

limiter = RateLimiter(
    requests=100,
    window_seconds=60,
    algorithm=Algorithm.SLIDING_WINDOW,
)

if limiter.allow("user-123"):
    handle_request()

Check Status

status = limiter.status("user-123")
print(f"Allowed: {status.allowed}")
print(f"Remaining: {status.remaining}/{status.limit}")
print(f"Resets at: {status.reset_at}")

Decorator

limiter = RateLimiter(10, 60)

@limiter.limit("10/minute")
def api_endpoint():
    return {"data": "ok"}

Algorithms

# Fixed window — resets at interval boundaries
RateLimiter(100, 60, Algorithm.FIXED_WINDOW)

# Sliding window (default) — rolling time window
RateLimiter(100, 60, Algorithm.SLIDING_WINDOW)

# Token bucket — smooth rate with burst capacity
RateLimiter(100, 60, Algorithm.TOKEN_BUCKET)

API

  • RateLimiter(requests, window_seconds, algorithm=SLIDING_WINDOW) — Create a rate limiter
  • limiter.allow(key) — Check if request is allowed
  • limiter.status(key) — Get detailed LimitStatus
  • limiter.reset(key) — Reset state for a key
  • limiter.reset_all() — Reset state for all keys
  • limiter.active_keys() — List all keys with active state
  • limiter.limit(rate) — Decorator with rate string (e.g., "10/minute")

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

philiprehberger_rate_limiter-0.2.3.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

philiprehberger_rate_limiter-0.2.3-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_rate_limiter-0.2.3.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_rate_limiter-0.2.3.tar.gz
Algorithm Hash digest
SHA256 f664fd38de8f7af7f6bd05a03bc4aa02fc976713a96eb2e854e95bc79e7e86c5
MD5 0ed0b21b205d28622bf51739d1e9eb69
BLAKE2b-256 7dbc9e2f13c1dd079f86618feaec64b028af78fd22393e327a93eb25a04d1eb4

See more details on using hashes here.

File details

Details for the file philiprehberger_rate_limiter-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_rate_limiter-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 646a833b7d88804da0d9cf7f4bc3d01e301f7a3e2bb45a4a7ac3a4e5cef728ae
MD5 1a563b6be94ffd98f5d2035bd24f3dcd
BLAKE2b-256 14105861d722d0216f7a9305f71b62e6ef805a79f44189f65d898ba21caaf270

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page