A Django app implementing the transactional outbox pattern with CloudEvents support
Project description
Django Broadcaster
A Django app that implements the transactional outbox pattern with CloudEvents support, enabling reliable event publishing in distributed systems.
Features
- 🔄 Transactional Broadcaster Pattern: Ensures events are published reliably
- ☁️ CloudEvents Compatible: Follows CloudEvents specification
- 🔌 Multiple Backends: Redis Streams, Kafka, NATS support
- 🔁 Retry Logic: Exponential backoff with configurable retries
- 🔑 Idempotency: Prevents duplicate event processing
- 📊 Monitoring: Built-in metrics and health checks
- 🎯 Event Handlers: Local event processing framework
- 🔧 Admin Interface: Django admin integration
Quick Start
Installation
# Using pip
pip install django-broadcaster
# Using uv
uv add django-broadcaster
Configuration
Add to your Django settings:
INSTALLED_APPS = [
# ... your other apps
'django_broadcaster',
]
OUTBOX_PUBLISHERS = {
'default': {
'BACKEND': 'django_broadcaster.backends.RedisStreamBackend',
'OPTIONS': {
'host': 'localhost',
'port': 6379,
'stream_name': 'events',
}
}
}
Usage
from django_broadcaster.publishers import publisher
# Publish an event
event = publisher.publish_event(
event_type='user.created',
source='user-service',
data={'user_id': 123, 'email': 'user@example.com'}
)
# Register event handler
from django_broadcaster.registry import event_registry
@event_registry.register('user.created')
def handle_user_created(event):
print(f"User created: {event.data}")
Running the Worker
python manage.py outbox_worker
Documentation
Full documentation is available at https://django-broadcaster.readthedocs.io/en/latest/.
Building and Serving Documentation Locally
To build the documentation locally:
# Build the documentation
make docs-build
# Serve the documentation locally at http://localhost:8080
make docs-serve
After running make docs-serve, you can access the documentation by opening http://localhost:8080 in your web browser.
Contributing
Contributions are welcome! Please read our Contributing Guide for details.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_broadcaster-0.1.1.tar.gz.
File metadata
- Download URL: django_broadcaster-0.1.1.tar.gz
- Upload date:
- Size: 36.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1108ecf9e2a4d5b6554ba113660b8dc3823e1655ef9d5ea4556014ff350e0b41
|
|
| MD5 |
5af268aeede59b79bad529bfe1f49d73
|
|
| BLAKE2b-256 |
cae6008ec1f38c8e11dc44447c0fe5918d81b61a69a3f87bdbcc93e58428d583
|
File details
Details for the file django_broadcaster-0.1.1-py3-none-any.whl.
File metadata
- Download URL: django_broadcaster-0.1.1-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34394984cf7c398388a70f9dc06958bd3d69363e278706570943ab298f376c13
|
|
| MD5 |
534f6451248b1f3031b89359f95197c1
|
|
| BLAKE2b-256 |
dc334c5e6fbf547ec56e7d09ccc2c1758ec38bd48cf426eb4a538a37fe0c14d6
|