An extensible command bus for Python 3
Project description
Tacty
An extensible command bus for Python 3 inspired by the Tactician Project.
Introduction
A command bus is a software component that performs operations in which the data and the execution steps are decoupled. The data for the operation is contained in a Command object and the execution steps are contained in a Handler. The responsibility of the command bus is matching a Command with its Handler and execute it.
Tacty is a library that provides a command bus implementation that is extensbile and easy to use.
Basic Usage
# A Command class containing the required data for the operation is defined.
class PrintNumberCommand:
def __init__(self, number):
self.number = number
# A Handler class that receives an instance of the command and contains the execution steps is defined.
class PrintNumberHandler(Handler):
def handle(self, command: PrintNumberCommand):
print(command.number)
# An instance of the Command is passed to the command bus for its execution.
command = PrintNumberCommand(300)
command_bus.handle(command)
Initialization
# A Resolver is a class that given a Command returns its Handler. The InMemoryResolver receives pairs of Command and Handlers keeping them connected in memory.
resolver = InMemoryResolver()
resolver.add_handler(PrintNumberCommand, PrintNumberHandler())
# The CommandHandlerMiddleware uses a resolver to match a Command with its Handler and executes it.
command_handler_middleware = CommandHandlerMiddleware(resolver)
# The CommandBus receives a list of middlewares that are executed when processing a Command. In order to fulfill its minimum functionality (executing a Handler given a Command) an instance of the CommandHandlerMiddleware must be passed as the last element.
command_bus = CommandBus([command_handler_middleware])
Examples
Find next some examples using Tacty:
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
tacty-1.1.0.tar.gz
(4.7 kB
view hashes)
Built Distribution
tacty-1.1.0-py3-none-any.whl
(18.7 kB
view hashes)