Skip to main content

Rate limit decorator

Project description

This packages introduces a function decorator preventing a functions from being called more often than allowed. This should prevent API providers from banning your applications by conforming to their rate limits.

It's similar to ratelimit with the following differences:

  • also handles async functions
  • accepts multiple limits (burst mode)
  • allows applying rate limit to many functions
  • allows assigning a cost
  • sleep_and_retry utility is a function and accepts a limit of retries (1 by default)

Thanks to anyio it works under asyncio and trio event loops.

Usage

from datetime import timedelta
from ratelimit_anyio import *

limiter = RateLimiter((
    RateLimit(timedelta(seconds=10), 10),
    RateLimit(timedelta(minutes=10), 100),
))

@limiter(cost=1)
async def function():
    # Simulate a remote call
    import asyncio
    await asyncio.sleep(3)

This function can be called up to 100 times within 10 minutes, and 10 times within any 10 seconds (burst mode). You can also declare functions cost (1 by default) which is useful when applying to more than one function, and they use the quota by different values

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

ratelimit_anyio-0.2.0.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

ratelimit_anyio-0.2.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ratelimit_anyio-0.2.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Linux/6.1.0-16-amd64

File hashes

Hashes for ratelimit_anyio-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9a8bd8701985b3ed39dfaf7c2798aa65d7bc84b131328ebefb390be4a4695c72
MD5 00ce018e83cd74b4490dfbee25651109
BLAKE2b-256 5414614c38212eaa8330087cf8f01c850a7aa461865ba762b9846ccf741a884b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ratelimit_anyio-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Linux/6.1.0-16-amd64

File hashes

Hashes for ratelimit_anyio-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7370e950c90db6c184e54c9fa83007757f5c9da47774bdf0e244aceb6d5d9fb0
MD5 6eda1d83726140385a184fd1c1900e8f
BLAKE2b-256 fb9d58b90d128b980c1e81d175e5e3d69e56cd0a8440367c6a23eb74ccd7c0d5

See more details on using hashes here.

Supported by

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