Skip to main content

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

Project description

Async Backlog Limiter

codecov PyPI PyPI - Python Version

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.1.tar.gz (6.7 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.1-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: async_backlog_limiter-0.1.1.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.10 Linux/6.11.0-1013-azure

File hashes

Hashes for async_backlog_limiter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f32674477810371c2cf5f11fb6f9434459ca2d5080c1ffe645d319b4a7680f00
MD5 41e65a08bbcf3a2ff774e321f58ad6db
BLAKE2b-256 b06574059084f0361a51fbff76dc7070edcbe2436551f8714927e9a9566d1550

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for async_backlog_limiter-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aca21dd8e1a66e3495c87351e7c170cdadef5dee6fe2f869fa16ce2f0bc6199e
MD5 ea8f7fd1913e885d1e24d6663425d4e1
BLAKE2b-256 369c04753310adb2bfd45964bc824cb66c18ad41c0e7674a5ede240b72aa60d2

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