Skip to content

Reproq

Background tasks for Django and PostgreSQL, with a Go worker and a terminal dashboard.

Stack
Django, Python, Go, PostgreSQL
Year
2025
Status
Alpha
Source code
adpena/reproq-django

I built Reproq for Django applications that already use PostgreSQL and need background jobs. The Django package handles task definitions, scheduling, and results. A separate Go worker claims and executes jobs.

Workers use PostgreSQL’s SKIP LOCKED mechanism to claim available tasks. The system supports delayed and periodic jobs, priorities, deduplication, and concurrency limits. Management commands cover cancellation, logs, configuration checks, and worker upgrades.

I also built Reproq TUI, a terminal dashboard for queue depth, throughput, failures, and worker health. It connects to worker metrics and can include Django-side statistics.

Reproq is in alpha. The setup guide documents deployment requirements, including running one scheduler per database.

Reproq TUI · recorded test fixture

The queue from the terminal

The dashboard brings queue depth, failures, worker health, and events into one terminal view. This snapshot comes from the project’s automated UI test and contains sample metrics.

  OK   worker worker.local  v0.1.0  demo  scrape <ago> (120ms)
  THROUGHPUT          AVAILABILITY          FAILURE RATE          P95 LATENCY
  -                   -                     0.11/s                210ms

|                                  |                                                         Events
|  OBSERVABILITY upd 09:20:10      |  Throughput  -                     upd 09:20:10         listening
|   TASKS                          |  No data yet                                           |
|  Queue depth    7.00             |                                                        |  Roles: worker, beat,...
|  Ready          8                |                                                        |  09:30:00 [role:worke...
|  Running        2                |                                                        |  09:31:00 retry sched...
|  Failed         1                |                                                        |
|  Paused         1                |                                                        |
|                                  |                                                        |
|   WORKERS                        |                                                        |
|  Total          3.00             |                                                        |
|  Alive          1                |                                                        |
|  Dead           0                                                                         |
|  Concurrency    3.00/10.0                                                                 |
|                                  |                                                        |
|   SYSTEM                         |  Queue depth  7.00                 upd 09:20:10        |
|  Worker Mem     -                |  No data yet                                           |
|  DB Pool        NaN              |                                                        |
|  DB Wait        -                |                                                        |
|  DBs            1                |                                                        |
|                                  |                                                        |
|   PERIODIC                       |                                                        |
|  Count          1                |                                                        |
|  Scheduler      pg_cron          |                                                        |
|  (low)                           |                                                        |
|  Queues         1                |                                                        |
|  Next up        in 2h                                                                     |
|
 ? help * p pause * r refresh * 1 1m window * 2 5m window * 3 15m window * / filter * d details * e toggle events * l
 login/logout * q quit Window 5m0s  Filter -  Auth -

Snapshot source · Run the local demo