Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/psincraian/commandbus

Command Bus Pattern in Python
https://github.com/psincraian/commandbus

commandbus cqrs cqrs-pattern patterns python python-library python3

Last synced: 3 days ago
JSON representation

Command Bus Pattern in Python

Awesome Lists containing this project

README

        

commandbus



PyPI version
Download stats version

## 📜 About
Command bus is a pattern from CQRS. In this pattern we have three components:

* `Command`: represents the desired action to be done, like `RegisterUserCommand`.
* `CommandHandler`: retrieves the data from the command and executes all the actions to accomplish the command
objective. In the previous case creates a new user and saves it do database.
* `CommandBus`: routes the command to the handler

## ⚒️ Installation
Installation is so easy, you only need to execute
```
pip install commandbus
```

## 🚀 Using commandbus
Using command is as easy as type
```python3
from commandbus import Command, CommandHandler, CommandBus

class SomeCommand(Command):
pass

class SomeCommandHandler(CommandHandler):
def __init__(self):
self.called = False

def handle(self, cmd: Command):
self.called = True

bus = CommandBus()
handler = SomeCommandHandler()
bus.subscribe(SomeCommand, handler)
assert not handler.called
bus.publish(SomeCommand())
assert handler.called
```

## 🚩 License
The code is available under the MIT license.