django-celery-outbox
Transactional Outbox pattern for Celery tasks in Django.
Features
- Durable persistence for committed task intents
- Duplicate-tolerant relay recovery
- Automatic retry with capped exponential backoff
- Dead letter queue for exhausted retries
- Structlog & Sentry trace propagation
- StatsD metrics
- Django admin integration
Compatibility
CI exercises Django 4.2 and 5.2 in the general matrix, plus dedicated live-broker smoke coverage for Django 5.0 and 5.1. The support claims in this repository stay aligned with those explicit lanes.
Coverage
Canonical coverage is published from the Py3.12 / Django 5.2 / Celery 5.6 / PostgreSQL lane in GitHub Actions.
Quick Start
pip install django-celery-outbox
# settings.py
INSTALLED_APPS = [..., 'django_celery_outbox']
CELERY_OUTBOX_APP = 'myproject.celery.app'
# celery.py
from django_celery_outbox import OutboxCelery
app = OutboxCelery('myproject')
python manage.py migrate
python manage.py check --database default
python manage.py celery_outbox_relay
check --database <alias> verifies SKIP LOCKED support and the outbox schema on the alias that stores the outbox tables; a plain check validates settings only. See Getting Started.
Committed rows stay in the outbox until the relay publishes them or dead-letters them, but
consumers still need to be idempotent. If the relay crashes after a broker publish and before
cleanup, stale-timeout recovery can reclaim and resend the row. Stronger end-to-end guarantees
still depend on broker confirms; without publisher confirms, the broker can fail ambiguously
after Celery.send_task() returns.
Security
See Security Guide for PII handling, traceback logging, and DLQ retention.
License
MIT
Metadata
Release files for django-celery-outbox 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_celery_outbox-0.4.2.tar.gz | 35.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_celery_outbox-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 81.1 kB
Release files / django_celery_outbox-0.4.2.tar.gz
| Download URL | django_celery_outbox-0.4.2.tar.gz |
|---|---|
| Size | 35.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f980d212440aab1953bfe220eab03c7cad647be2241acdce149ce61c85b1ec0
|
|
BLAKE2b-256 checksum How to use checksums |
aa17b3056279d230f85ba655fcf04db77a06bfd8391cb54b73babaee23fb6ac3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / django_celery_outbox-0.4.2-py3-none-any.whl
| Download URL | django_celery_outbox-0.4.2-py3-none-any.whl |
|---|---|
| Size | 45.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
417dad68b3bb48dd7b99a4d5cd3f705eebff13a225d5a2b4022d95f8807fb5b0
|
|
BLAKE2b-256 checksum How to use checksums |
206674f1520847bab7e122ab54bd5cd6f33dc6742967d553d3d2395d0817b0a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency log