Skip to main content

Async concurrency and queue limiter with server-style backlog control.

Project description

Async Backlog Limiter

A lightweight, zero-dependency Python library to limit concurrent execution and queue size of asynchronous tasks — simulating a TCP-style backlog for async servers, job runners, or microservices to ensure overload protection.

📦 Installation

pip install async-backlog-limiter

🛠️ Usage

  • If more than capacity concurrent requests are running, additional ones will wait.
  • If the total number of active + waiting requests exceeds queue_limit, new ones are immediately rejected with a RateLimitExceeded exception.
import asyncio
from async_backlog_limiter import AsyncBacklogLimiter, RateLimitExceeded

limiter = AsyncBacklogLimiter(capacity=5, queue_limit=10)

async def handle_request():
    try:
        async with limiter():
            # Your async work here
            await asyncio.sleep(1)
    except RateLimitExceeded:
        print("Request rejected due to overload.")

# Run many tasks
await asyncio.gather(*[handle_request() for _ in range(20)])

🧪 Tests

This project includes a comprehensive test suite using unittest.

To run tests:

python -m unittest discover -s tests

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

async_backlog_limiter-0.1.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

async_backlog_limiter-0.1.0-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file async_backlog_limiter-0.1.0.tar.gz.

File metadata

  • Download URL: async_backlog_limiter-0.1.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.11.0-1014-azure

File hashes

Hashes for async_backlog_limiter-0.1.0.tar.gz
Algorithm Hash digest
SHA256 52ca88186e9ad048fcc3ec440da5fda572147e6524fd935c2d2217269ccdd8c2
MD5 84ba2974e9f38129acc85efac5280400
BLAKE2b-256 958ccb2b43c1ab1b231893e485d2d47dc53919f706372bfd7853ac10f6d8142a

See more details on using hashes here.

File details

Details for the file async_backlog_limiter-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for async_backlog_limiter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb6ebaece98cd7aa00d08e8c19ef7ca3071d14a08e13505cdee47584edc1f17e
MD5 399f92eac3cbafae44d9e3c53d8d815b
BLAKE2b-256 253c3c9d19ce0d9d8e11736217268cffeae05aac3172842edf1e9e3a40549258

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