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

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_rate_limiter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 71d1d6abc0638f9712df4af557797e435c0192b3892e1871505813d3ccf33883
MD5 549a1ff181721a64cd67f5afdb5efb1c
BLAKE2b-256 6ddef10b5ca1d4f6eabd977a3d7fd36de056aab69c753c4ac5e7626991a348ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_rate_limiter-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 84c2ec9c2d8e8da5e663bf9f19733d8a66973abcd858ff7c850d76b630a1f8b5
MD5 6aed31e3341d4a218a9a0fd0cee429a2
BLAKE2b-256 a3622e1282de0019f075e6546a6b78c595827f82a460594895ab59f2af006ce1

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