Configuration
Most package settings are prefixed with CELERY_OUTBOX_. Metrics integration also reads MONITORING_* settings.
Required Settings
| Setting |
Type |
Description |
CELERY_OUTBOX_APP |
str |
Dotted path to your Celery app instance. Example: 'myproject.celery_app.app'. Invalid values fail python manage.py check and runtime startup. |
django-celery-outbox also registers Django system checks for database support, applied outbox migrations, and CELERY_OUTBOX_EXCLUDE_TASKS validation.
Package Settings
| Setting |
Type |
Default |
Description |
CELERY_OUTBOX_EXCLUDE_TASKS |
set[str] \| frozenset[str] \| list[str] \| tuple[str, ...] |
set() |
Task names to bypass the outbox (sent directly to broker). Invalid values fail in python manage.py check and at runtime. |
CELERY_OUTBOX_STRUCTLOG_ENABLED |
bool |
True |
Enable structlog context propagation |
CELERY_OUTBOX_STRUCTLOG_CONTEXT_KEYS |
list[str] \| None |
None |
structlog keys to capture. None captures all keys |
CELERY_OUTBOX_LOG_EXCEPTION_TRACEBACK |
bool |
True |
Include full traceback in exception logs |
CELERY_OUTBOX_PII_REDACTOR |
str \| callable |
None |
Callable (or dotted path to one) that stores redacted inspection copies of task args/kwargs and redacts nested serialized signatures for admin/model inspection |
CELERY_OUTBOX_DLQ_RETENTION |
dict[str, str] \| None |
None |
Optional default retention policy for dead-letter purge. Supported keys: older_than_dead, older_than_created, task_name. |
CELERY_OUTBOX_STALE_TIMEOUT_SECONDS |
int |
300 |
Shared stale-row recovery window used by relay defaults, admin live-backlog summaries, and celery_outbox_stats. |
Redaction Notes
- The redactor callable must accept
(task_name, args, kwargs).
- Top-level redaction affects the stored
redacted_args and redacted_kwargs inspection fields only; the relay still publishes the original payload.
- Nested signatures inside serialized
options (link, link_error, chain, chord) are redacted only for inspection surfaces such as Django admin and model properties.
Relay Command Options
python manage.py celery_outbox_relay [OPTIONS]
| Option |
Default |
Description |
--batch-size |
100 |
Messages per batch |
--idle-time |
1.0 |
Seconds to sleep when queue is empty |
--backoff-time |
120 |
Base seconds for exponential backoff |
--max-retries |
5 |
Retries before dead letter |
--stale-timeout-seconds |
CELERY_OUTBOX_STALE_TIMEOUT_SECONDS or 300 |
Seconds before in-flight rows are considered stale and reclaimable |
--send-timeout |
10.0 |
Timeout passed to Celery.send_task() during broker publish |
--shutdown-timeout |
30.0 |
Drain window for starting additional sends after SIGTERM/SIGINT |
--broker-outage-cooldown |
30.0 |
Process-local breaker cooldown before the next batch attempt |
--max-backoff |
3600.0 |
Upper bound for normal message retry delay |
--liveness-file |
None |
File to touch after each batch (for k8s probes) |
Metrics Settings
| Setting |
Type |
Default |
Description |
MONITORING_METRICS_ENABLED |
bool |
True |
Enable or disable all StatsD metric emission |
MONITORING_STATSD_HOST |
str |
'localhost' |
StatsD server host |
MONITORING_STATSD_PORT |
int |
9125 |
StatsD server port |
MONITORING_STATSD_PREFIX |
str |
'celery_outbox' |
Metric name prefix |
MONITORING_STATSD_TAGS |
dict |
{} |
Default tags for all metrics |
CELERY_OUTBOX_DISABLE_TASK_NAME_TAGS |
bool |
False |
Disable task_name tags entirely |
CELERY_OUTBOX_MONITORED_TASKS |
set[str] |
None |
Allowlist of task names for tags (others become "other") |