$ cd ..

Roost

python
postgresql
fastapi
open-source

Open-source Postgres-backed job queue for Python. No Redis, no RabbitMQ — just your existing Postgres. Transactional enqueue, LISTEN/NOTIFY, crash recovery, and a live dashboard. 15,289 jobs/sec on a single async connection.

Roost Postgres-backed job queue with no Redis or RabbitMQ

Roost is a background job queue that uses your existing PostgreSQL database as its backend — no Redis, no RabbitMQ, no extra infrastructure to run or monitor.

Why Roost

Most projects already have Postgres. Adding a job queue shouldn’t mean adding and operating a whole new service. Roost turns your Postgres into a reliable, high-throughput queue using primitives the database already provides.

How it works

  • Transactional enqueue — jobs commit within your database transaction, so a rollback never produces orphaned tasks
  • SELECT FOR UPDATE SKIP LOCKED — concurrent workers each claim a distinct job without stepping on each other
  • LISTEN / NOTIFY — real-time job notifications eliminate polling overhead entirely
  • Heartbeats + orphan reaper — automatic recovery if a worker crashes mid-job

Performance

ModeThroughput
Bulk enqueue (single async conn)15,289 jobs/sec
Sustained drain (16 workers)822 jobs/sec

Stack & compatibility

  • Drivers: asyncpg (async), psycopg (sync)
  • Frameworks: FastAPI, Starlette, Django, Flask
  • Python: 3.10 – 3.13 · Postgres: 13 – 16
  • Dashboard: roost-web — live job monitor with SSE real-time updates
  • License: MIT