--- id: saq version: "0.26.4" license: MIT license_treatment: permissive maintenance: active --- # saq — Distributed Python job queue with asyncio and redis License: permissive · Maintenance: active · Downloads: 225.3K/mo ## What it is and what it does SAQ is a job queueing framework designed for async Python applications. It lets you offload long-running or expensive tasks (email sending, database queries, data analysis) to background workers, keeping your main application responsive. Jobs are stored in Redis or PostgreSQL and executed by worker processes you control. Unlike synchronous queue libraries, SAQ is built on asyncio from the ground up, making it naturally fast for async workloads. It supports scheduled jobs via cron expressions (using croniter), lifecycle hooks (startup, shutdown, before/after job processing), and includes a web UI for monitoring queue health and worker status. Configuration is declarative—you define a settings dictionary with your functions, concurrency level, and optional cron jobs, then start workers from the command line. Use it for: - Schedule email notifications or SMS alerts to run asynchronously without blocking the main request. - Execute expensive database queries or reports in the background and retrieve results later. - Run periodic maintenance tasks (cleanup, aggregation, backups) on a cron schedule. - Distribute compute-heavy data analysis across multiple worker processes. - Monitor job queue health and worker status via the built-in web dashboard. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. SAQ is an async job queue framework that runs background tasks using asyncio, backed by Redis or PostgreSQL, with optional cron scheduling and a web monitoring UI. Yes. SAQ is production-ready (Development Status 5), actively maintained, has no known vulnerabilities, and offers low install friction. Choose it if you need async job queueing with Redis or PostgreSQL backing and want simpler setup than ARQ with better latency. Not suitable if you require synchronous-only job processing or don't have a Redis/PostgreSQL instance available. ## Install pip install saq uv add saq poetry add saq ## Installing saq Before you install: Low install friction with a pure-Python wheel. Actively maintained with a recent release and 878 repository stars. Single runtime dependency (croniter) keeps the core lightweight. License in practice: MIT license is permissive; you can use, modify, and distribute SAQ freely in commercial and private projects with minimal restrictions. Quickstart: pip install saq[redis] from saq import Queue queue = Queue.from_url("redis://localhost") await queue.enqueue("my_function", arg=value) Requires a running Redis or PostgreSQL instance; asyncio-compatible Python environment. Verify before relying: - Whether redis-py >= 4.2 is automatically installed by the saq[redis] extra or must be specified separately. - Performance comparison claims ('8x faster than ARQ', '< 5ms latency') lack independent verification in the fact sheet. - Exact Python version floor and whether all listed versions (3.9–3.13) are actively tested. ## Package facts - License: MIT (permissive) - Python support: unspecified - Install friction: low - Maintenance: active - Downloads: 225.3K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags async job queue, background task scheduler, redis queue framework, distributed job processing, asyncio task queue, cron job scheduling, worker pool management, async-first, background-jobs, cron-scheduling [View on SkillFed](https://skillfed.io/packages/saq) · [View on PyPI](https://pypi.org/project/saq/)