Admin¶
With django.contrib.admin installed, every queue's tasks land in one changelist,
filterable by queue and state. Runs, Checkpoints, Events, Waits, and the Queues catalog
get their own alongside it.
- Read-only. There is no retry or cancel — the admin reports, it does not drive.
- A queue created outside django-absurd —
absurdctl, a direct SDK call — is not in the views, so its tasks do not appear. The changelist says so and names the queues;manage.py absurd_sync_queuesindexes them. - Toggle with
ENABLE_ADMIN, or register on your own site withADMIN_SITE(Configuration).
Trace a task¶
A task's own page carries the whole history inline: Runs is every attempt,
Checkpoints every committed step — including a $awaitEvent:
entry per event awaited — and Waits whatever it is blocked on
right now.
- Each inline row links through to that run, checkpoint, or wait in full.
Register schedules¶
pg_cron schedules are the one writable surface.
Add one (name, task, cron — the rest resolves from the task's
decorators), then change it to fill args / kwargs
and tick Enabled. Saving or deleting an enabled row (un)schedules its job at once.
- Source separates the two:
Settingsrows come fromSCHEDULEand are read-only,Adminrows are yours to edit. nameis immutable — it forms the job identity. The options resolve once at create, so editing a task's decorators later leaves existing rows alone.max_attemptsdefaults to5; clearing it means retry forever.- Writes bypassing
.save()(data migrations,bulk_create,update, raw SQL) emit on the next reconcile, not immediately. loaddatabypasses the router — pass--database=<alias>. Another database raisesNotImplementedError.


