Skip to main content

Async Throttle

Multipurpose concurrency primitive for asyncio coroutines.

Features

This throttle is configured with two related, but different parameters:

Throttle(capacity: float, concurrency: int = 0, period: float = 1.0)

capacity - Sets the rate limit for requests, as capacity per period seconds.

concurrency - The number of jobs that can be executing at a given time.

Usually, servers will set policies on both of these dimensions, and will suspend clients that violate either of them.

Throttle#pause(td: int)

The pause method will lock the throttle for the given number of seconds.

For example, if an API bans your client from accessing resources due to violating their rate-limit, you can tell your code to sleep for a period of time and try again later.

Usage

The throttle can be a drop-in replacement for another primitive like asyncio.Semaphore. In fact, it's really just an asyncio.Semaphore (which handles the concurrency limit) mixed with a token bucket to provide rate limiting.

throttle = Throttle(10, 2)  # Two concurrent coros limited to 10qps (total).

# Perform one task when the budget allows
async with throttle:
    # Do some (async) thing

# For tasks that should consume more of the budget, you can call the throttle:
async with throttle(5):
    # Do some more expensive thing, equivalent to 5 requests

Like other asyncio primitives, Throttle is not thread-safe.

Release files for async-throttle 1.0.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 async-throttle 1.0.0
File Size Uploaded
async_throttle-1.0.0.tar.gz 4.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for async-throttle 1.0.0
File Interpreter ABI Platform
async_throttle-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 11.1 kB

Release files / async_throttle-1.0.0.tar.gz

Download URL async_throttle-1.0.0.tar.gz
Size 4.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9bb35cd57a55164c4f8c54bc15c0161b0068f89b4785caf468ab298c96ed1989
BLAKE2b-256 checksum
How to use checksums
05cf7056117cb35d4f6040464e669b763103a6419d65c04af487f131b4ba79b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.11.3 Darwin/22.5.0

Release files / async_throttle-1.0.0-py3-none-any.whl

Download URL async_throttle-1.0.0-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db0df33190357548383e46b4e8189a81bb3e0bc609c9952f3ed3fa70dba1ce64
BLAKE2b-256 checksum
How to use checksums
c9125f26c43a09e194240927b00da3e2bccb24eea3bb4e3e0c3f25ce552b274f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.11.3 Darwin/22.5.0

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

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