Dramatiq Kombu-based broker
Project description
dramatiq-kombu-broker
Dramatiq Kombu-based broker
Key features:
- Connection pool support (native): no unexpected connections count grow up!
- Channel pool support (via kombu-pyamqp-threadsafe lib): consume and produce through channels, "Connection limit reach" fixed now!
- Memory protection via configurable max_delay_time limits: prevents RabbitMQ memory exhaustion from long-delayed messages
- Deadlock protection via
confirm_timeout: prevents infinite blocking when RabbitMQ connection fails during message publishing (default: 5s timeout)
Minor features
- Auto-add hostname to connection props.
- Allow change default queue name without changing each actor (e.g. 'default' -> 'dramatiq'). See configuration docs
- Consumer healthcheck support
- Ignore topology difference (PreconditionFailed), you can change your queue options safely
- No scary Pika logs. Fully based on kombu.
- ACK/NACK in YOUR middleware. Check message acknowledge status: Message.acknowledged
Auto-add hostname to connection props. Now you can see location of each connection in RabbitMQ web admin
Installing
To install this package, run:
pip install dramatiq-kombu-broker
Using
Django Dramatiq
settings.py
DRAMATIQ_BROKER = {
'BROKER': 'dramatiq_kombu_broker.broker.ConnectionSharedKombuBroker',
'OPTIONS': {
'kombu_connection_options': KOMBU_RABBITMQ_PARAMS,
},
}
Contributing
Prerequisites
1. Set up Git to use SSH
- Generate an SSH key and add the SSH key to your GitHub account.
- Configure SSH to automatically load your SSH keys:
cat << EOF >> ~/.ssh/config Host * AddKeysToAgent yes IgnoreUnknown UseKeychain UseKeychain yes ForwardAgent yes EOF
2. Install Docker
- Install Docker Desktop.
- Linux only:
- Export your user's user id and group id so that files created in the Dev Container are owned by your user:
cat << EOF >> ~/.bashrc export UID=$(id --user) export GID=$(id --group) EOF
- Export your user's user id and group id so that files created in the Dev Container are owned by your user:
- Linux only:
3. Install VS Code or PyCharm
- Install VS Code and VS Code's Dev Containers extension. Alternatively, install PyCharm.
- Optional: install a Nerd Font such as FiraCode Nerd Font and configure VS Code or configure PyCharm to use it.
Development environments
The following development environments are supported:
- ⭐️ GitHub Codespaces: click on Code and select Create codespace to start a Dev Container with GitHub Codespaces.
- ⭐️ Dev Container (with container volume): click on Open in Dev Containers to clone this repository in a container volume and create a Dev Container with VS Code.
- Dev Container: clone this repository, open it with VS Code, and run Ctrl/⌘ + ⇧ + P → Dev Containers: Reopen in Container.
- PyCharm: clone this repository, open it with PyCharm, and configure Docker Compose as a remote interpreter with the
devservice. - Terminal: clone this repository, open it with your terminal, and run
docker compose up --detach devto start a Dev Container in the background, and then rundocker compose exec dev zshto open a shell prompt in the Dev Container.
Developing
- This project follows the Conventional Commits standard to automate Semantic Versioning and Keep A Changelog with Commitizen.
- Run
poefrom within the development environment to print a list of Poe the Poet tasks available to run on this project. - Run
poetry add {package}from within the development environment to install a run time dependency and add it topyproject.tomlandpoetry.lock. Add--group testor--group devto install a CI or development dependency, respectively. - Run
poetry updatefrom within the development environment to upgrade all dependencies to the latest versions allowed bypyproject.toml. - Run
cz bumpto bump the package's version, update theCHANGELOG.md, and create a git tag.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dramatiq_kombu_broker-0.3.0.tar.gz
(209.5 kB
view details)
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 dramatiq_kombu_broker-0.3.0.tar.gz.
File metadata
- Download URL: dramatiq_kombu_broker-0.3.0.tar.gz
- Upload date:
- Size: 209.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.10.19 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6518879d42848815693c969d7924be1729096f0258f043f64c8ce3fd1f2c101
|
|
| MD5 |
699d5b09385089495b7c417571eed277
|
|
| BLAKE2b-256 |
8c3c56c14908733cf41c949613d6d42d6cfed7ca6a273cea0b10ad4f51fe7f43
|
File details
Details for the file dramatiq_kombu_broker-0.3.0-py3-none-any.whl.
File metadata
- Download URL: dramatiq_kombu_broker-0.3.0-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.10.19 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
593952b5430ca1fcbbb662f725d25dfd590d7f6cdbe16da7a58e6b96f8a2c158
|
|
| MD5 |
07359202d60552519a3f6e22d33676a8
|
|
| BLAKE2b-256 |
2986105ffda8d70c13c07acee448dac5d5fa52f4c991b407e4f3b9a01a559aed
|