finds.dev← search

// the find

procrastinate-org/procrastinate

★ 1,301 · Python · MIT · updated Jun 2026

PostgreSQL-based Task Queue for Python

Procrastinate is a Python task queue that uses PostgreSQL as its only infrastructure dependency — no Redis, no separate broker. Jobs are stored in Postgres tables, workers poll via LISTEN/NOTIFY, and you get locking, retries, periodic tasks, and cancellation all backed by the same database you're already running. Aimed at Django/async Python shops that want to avoid operating another stateful service.

Uses PostgreSQL LISTEN/NOTIFY for real-time job dispatch instead of polling loops, which means low latency without the overhead of a separate broker. The queueing lock feature (only one job of a given key queued at a time) is genuinely useful for deduplication and rarely ships as a first-class primitive in task queues. Django integration is deep — migrations, admin UI with job status summary, management commands, and a healthcheck endpoint. Test suite covers unit, integration, acceptance, and benchmark layers with real Postgres, not mocks.

Asking for additional maintainers in the README is a yellow flag — at 1,300 stars this project is not tiny, but it's clearly under-resourced relative to its surface area. The Django migration trail is 41 migrations deep (0001–0041) with several pre/post split pairs, which signals schema evolution has been painful and future upgrades carry real risk. No support for brokers other than Postgres means if you outgrow it or need cross-language task dispatch, you're rewriting rather than swapping connectors. Windows support is a documented second-class citizen with its own how-to page, which is rarely a good sign.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →