Skip to main content

In-memory rate limiter with sliding window and token bucket

Project description

philiprehberger-rate-limiter

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")

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.0.tar.gz (5.7 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.0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_rate_limiter-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ebcaf7937a72fe139f0f4632c053e0215694813afbfd2f62e761d5dd92fbfa0e
MD5 875105912c601953039c6a5f31af6ad8
BLAKE2b-256 86f4a42506f52b045d756496ee8cfb62785940ab490c213fd4279b6a935588e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_rate_limiter-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 44abfff8387288f824447d75679a9e9d441fe318ca70992ab0b523f9c6eb7b4a
MD5 8c98d22d83770b1189c02fb38fd3271d
BLAKE2b-256 37f604a7778e00107197f50f003f13c3f1d961c09aa5aa4fda0174f8dd580769

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