Skip to main content

python rate limiter

Project description

Rate Limit

this package help you to limit the call's [frequent] rates of any callable in python.

Usage

basic usage

from src.rlimit import Limiter, Per
from time import sleep


@Limiter(times=2, per=2 * Per.SECOND)
def func_a():
    return True


func_a()  # True
func_a()  # True
func_a()  # OverflowError
sleep(2)
func_a()  # True
func_a()  # True
func_a()  # OverflowError

key example

from src.rlimit import Limiter, Per


@Limiter(
    times=2, per=2 * Per.SECOND,
    key=lambda name, age: str(hash((name, age)))
)
def func_a(name: str, age: int):
    return f'hi2{name}-{age}'


func_a('gzuz', 13)
func_a('gzuz', 14)
func_a('gzuz', 13)
func_a('gzuz', 15)
func_a('gzuz', 14)
func_a('gzuz', 14)  # OverflowError
func_a('gzuz', 13)  # OverflowError

fastapi

from src.rlimit import Limiter, Per
from fastapi import APIRouter, HTTPException, Request

router = APIRouter(...)


@router.get(...)
@Limiter(
    times=2, per=4 * Per.SECOND,
    key=lambda r: r.client.host,
    exception=HTTPException(429)
)
def test_ratelimit(request: Request):
    return 'no limit'

Install

pip install git+https://github.com/omidekz/rlimit

pypi will add


Custom Memory

to implement new memory class, you have to extend BaseMemory abstract class

Project details


Release history Release notifications | RSS feed

This version

1.5

Download files

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

Source Distribution

rlimit-1.5.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

rlimit-1.5-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file rlimit-1.5.tar.gz.

File metadata

  • Download URL: rlimit-1.5.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for rlimit-1.5.tar.gz
Algorithm Hash digest
SHA256 41cfb7f2918ce2daabeb87086443d60b68ada1079f303e9777c99c4e5fdea48b
MD5 1a17ddf00edbc360391ebf25b3135816
BLAKE2b-256 18bf35723971368311025569612d498d4acf5df9c0d0adce5451e9e96baf2ba6

See more details on using hashes here.

File details

Details for the file rlimit-1.5-py3-none-any.whl.

File metadata

  • Download URL: rlimit-1.5-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for rlimit-1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d1a36b6719de25cd2399c65a45811218d52ef0d1847921d2771bee97100c4aea
MD5 48b1c0f8191e23a35d9a0446a557afa8
BLAKE2b-256 f31ad87fa0bc6c94498ac6ee24176d5b48c66fb4e342c0da910e1908effcfc35

See more details on using hashes here.

Supported by

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