Skip to main content

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

Release files for ratelimit-anyio 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ratelimit-anyio 0.2.0
File Size Uploaded
ratelimit_anyio-0.2.0.tar.gz 6.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ratelimit-anyio 0.2.0
File Interpreter ABI Platform
ratelimit_anyio-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.8 kB

Release files / ratelimit_anyio-0.2.0.tar.gz

Download URL ratelimit_anyio-0.2.0.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9a8bd8701985b3ed39dfaf7c2798aa65d7bc84b131328ebefb390be4a4695c72
BLAKE2b-256 checksum
How to use checksums
5414614c38212eaa8330087cf8f01c850a7aa461865ba762b9846ccf741a884b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.12.1 Linux/6.1.0-16-amd64

Release files / ratelimit_anyio-0.2.0-py3-none-any.whl

Download URL ratelimit_anyio-0.2.0-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7370e950c90db6c184e54c9fa83007757f5c9da47774bdf0e244aceb6d5d9fb0
BLAKE2b-256 checksum
How to use checksums
fb9d58b90d128b980c1e81d175e5e3d69e56cd0a8440367c6a23eb74ccd7c0d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.12.1 Linux/6.1.0-16-amd64

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page