Skip to content

adamrefaey/asynctasq

AsyncTasQ

Tests Coverage Python Version PyPI Version License: MIT

A modern, async-first, type-safe task queue for Python. Built with asyncio, featuring 5 queue backends (Redis, PostgreSQL, MySQL, RabbitMQ, AWS SQS), automatic ORM serialization, and enterprise-grade reliability.

Table of Contents

Quick Start

# Install with your preferred driver
uv add "asynctasq[redis]"

# Configure environment
asynctasq publish  # Generate .env.example template
cp .env.example .env  # Edit with your settings

Define and dispatch tasks:

from asynctasq import init, run, task

init()  # Loads from .env

@task
async def send_email(to: str, subject: str):
    print(f"Sending to {to}: {subject}")
    return f"Email sent to {to}"

# Dispatch tasks
async def main():
    task_id = await send_email(to="user@example.com", subject="Welcome!").dispatch()
    print(f"Task dispatched: {task_id}")

if __name__ == "__main__":
    run(main())

Run workers:

uv run asynctasq worker --queues default

See the full Quick Start guide for complete examples with Redis setup, class-based tasks, and configuration chaining.

Documentation

Examples:

Why AsyncTasQ?

True async-first architecture – Built with asyncio from the ground up, not retrofitted onto sync foundations like Celery/RQ. Four execution modes (async I/O, sync I/O, async CPU, sync CPU) for optimal performance.

Intelligent serialization – Automatic ORM model handling (SQLAlchemy, Django, Tortoise) with msgpack encoding reduces payloads by 90%+. Pass models directly as task arguments.

Enterprise reliability – ACID guarantees (PostgreSQL/MySQL), dead-letter queues, crash recovery via visibility timeouts, graceful shutdown, and real-time event streaming.

Zero vendor lock-in – 5 production backends (Redis, PostgreSQL, MySQL, RabbitMQ, AWS SQS) with identical API. Switch drivers with one config line.

Developer experience – Type-safe and IDE support, elegant Laravel-inspired API, method chaining, beautiful Rich-formatted output, and first-class FastAPI integration.

Key Features

  • Async-first with native asyncio throughout
  • 5 queue backends: Redis, PostgreSQL, MySQL, RabbitMQ, AWS SQS
  • Type-safe with full type hints and IDE support
  • 4 execution modes: async I/O, sync I/O (threads), CPU-bound (processes)
  • ORM integration: Auto-serialization for SQLAlchemy, Django, Tortoise
  • msgpack serialization: 2-3x faster than JSON
  • ACID guarantees (PostgreSQL/MySQL)
  • Dead-letter queues for failed task inspection
  • Environment & .env file support
  • FastAPI integration with lifecycle management
  • Real-time event streaming via Redis Pub/Sub
  • Beautiful console output with Rich formatting
  • Graceful shutdown with signal handlers
  • Configurable retries with custom logic hooks

Comparison with Alternatives

AsyncTasQ differentiates itself with true async-first architecture, ORM auto-serialization, 5 production backends (Redis, PostgreSQL, MySQL, RabbitMQ, SQS), ACID guarantees, and dead-letter queues.

Feature AsyncTasQ Celery ARQ Dramatiq RQ Huey
Async ✅ Native ❌ No ✅ Yes ⚠️ Limited ❌ No ⚠️ Limited
Type Safety ✅ Full type hints and IDE support ⚠️ External ✅ Yes ✅ Yes ✅ Yes ⚠️ Limited
Backends 5 3 1 2 1 4
ORM Auto-serialization ✅ Yes ❌ No ❌ No ❌ No ❌ No ❌ No
ACID ✅ Yes ❌ No ❌ No ❌ No ❌ No ❌ No
DLQ ✅ Built-in ⚠️ Manual ❌ No ✅ Yes ❌ No ❌ No
FastAPI ✅ Native ⚠️ Manual ⚠️ Manual ⚠️ Manual ⚠️ Manual ⚠️ Manual

Choose AsyncTasQ for: Modern async apps (FastAPI, aiohttp), type-safe codebases, automatic ORM handling, enterprise ACID requirements, multi-backend flexibility.

Choose alternatives for: Mature ecosystems with many plugins (Celery), cron scheduling (Huey, ARQ), simple sync applications (RQ), or existing large codebases.

Contributing

See CONTRIBUTING.md for setup and development workflow:

just init        # One-line setup with deps and hooks
just docker-up   # Start Redis, PostgreSQL, MySQL, RabbitMQ, LocalStack
just test        # Run all tests (or just test-unit / just test-integration)
just ci          # Full CI suite locally

Roadmap

  • SQLite & Oracle drivers
  • Task chaining & workflows
  • Rate limiting & task priority
  • Scheduled/cron tasks

License & Support

MIT License – see LICENSE.

Links: RepositoryIssuesDiscussions

Built with ❤️ by Adam Refaey

About

A modern, async-first, type-safe task queue for Python. Built with asyncio, featuring 5 queue backends (Redis, PostgreSQL, MySQL, RabbitMQ, AWS SQS), automatic ORM serialization, and enterprise-grade reliability.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages