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.4.tar.gz (5.9 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.4-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_rate_limiter-0.2.4.tar.gz
Algorithm Hash digest
SHA256 a2acb4ac04be4cb653ce56cf2b9896ab770c436be8fb7766f7737d51862f8f42
MD5 9fada6ccddba23a08b923c6770169ac7
BLAKE2b-256 2745d61a85cb21aad623abdc58c48d262750edbaec12927dfbe7aadb83c20bc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_rate_limiter-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ff57ab36704032c6eaa133c6072cfa4a10ef0a80997cb7e9fb39b2f7d19d5bea
MD5 26697c03def714c4b6971a49223d19bf
BLAKE2b-256 b74cc680e6fdb8015e5918708a19968e17f515f5f6e91bb59ce14e6d92183e4c

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