skillfed

saq

Distributed Python job queue with asyncio and redis

saq v0.26.4 225.3K downloads/30d#9,224 on PyPI878
Permissive license MIT Active released

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 on this page — 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

saq on PyPI

pip

pip install saq

uv

uv add saq

poetry

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 not specified
Install friction low — pure-Python wheel
Runtime dependencies 1 — croniter
Maintenance actively maintained — 85 days since the last release
Last repo commit
First released
Downloads 225,253/month — #9,224 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: saq-0.26.4-py3-none-any.whl

Development Status :: 5 - Production/StableFramework :: AsyncIOIntended Audience :: DevelopersIntended Audience :: Information TechnologyIntended Audience :: System AdministratorsLicense :: OSI Approved :: MIT LicenseOperating System :: MacOSOperating System :: OS IndependentOperating System :: POSIX :: LinuxOperating System :: UnixProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9Topic :: InternetTopic :: Software Development :: Libraries :: Python ModulesTopic :: System :: Distributed ComputingTopic :: System :: MonitoringTopic :: System :: Systems Administration

Tags

async job queuebackground task schedulerredis queue frameworkdistributed job processingasyncio task queuecron job schedulingworker pool management
async-firstbackground-jobscron-scheduling

More Python Modules packages