// the find
procrastinate-org/procrastinate
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.