Bus for anyblok
Project description
AnyBlok / bus
Improve AnyBlok to add comunication with bus.
Blok |
Dependancies |
Description |
---|---|---|
bus |
Consume and publish message with pika and marshmallow |
AnyBlok / Bus is released under the terms of the Mozilla Public License.
See the latest documentation
Usage
Declare a new consumer
In an AnyBlok Model you have to decorate a method with bus_consumer
from anyblok_bus import bus_consumer from anyblok import Declarations from .schema import MySchema @Declarations.register(Declarations.Model) class MyModel: @bus_consumer(queue_name='name of the queue', schema=MySchema()) def my_consumer(cls, body): # do something
The schema must be an instance of marshmallow.Schema, see the marshmallow documentation
Publish a message through rabbitmq
The publication is done by registry.Bus.publish method:
registry.Bus.publish('exchange', 'routing_key', message, mimestype)
if the message have not be send, then an exception is raised
..warning:
A profile must be defined and selected by the AnyBlok configuration **bus_profile**
Front Matter
Information about the AnyBlok / Bus project.
Project Homepage
AnyBlok is hosted on github - the main project page is at https://github.com/AnyBlok/anyblok_bus. Source code is tracked here using GIT.
Releases and project status are available on Pypi at http://pypi.python.org/pypi/anyblok_bus.
The most recent published version of this documentation should be at http://doc.anyblok-bus.anyblok.org.
Installation
Install released versions of AnyBlok from the Python package index with pip or a similar tool:
pip install anyblok_bus
Installation via source distribution is via the setup.py script:
python setup.py install
Installation will add the anyblok commands to the environment.
Unit Test
Run the test with nose:
pip install nose nosetests anyblok_bus/tests
Script
anyblok_bus add console_script to launch worker. A worker consume a queue defined by the decorator anyblok_bus.bus_consumer:
anyblok_bus -c anyblok_config_file.cfg
..note:: The profile name in the configuration is used to find the correct url to connect to rabbitmq
Dependencies
AnyBlok / Bus works with Python 3.3 and later and pika. The install process will ensure that AnyBlok is installed, in addition to other dependencies. The latest version of them is strongly recommended.
Contributors
Anybox team:
Jean-Sébastien Suzanne
Florent Jouatte
Sensee team:
Julien SZKUDLAPSKI
Bugs
Bugs and feature enhancements to AnyBlok should be reported on the Issue tracker.
CHANGELOG
1.1.0 (2018-09-15)
Improved logging: for helping to debug the messages
Added create and update date columns
fixed consume_all method. now the method does not stop when an exception is raised
Used marsmallow version >= 3.0.0
1.0.0 (2018-06-05)
add Worker to consume the message from rabbitmq
add publish method to publish a message to rabbitmq
add anyblok_bus.bus_consumer add decorator to défine the consumer
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
Built Distribution
Hashes for anyblok_bus-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef8adfc9a758e2630af40f6b6e12388fc6b4ed6891f663d98e0630e9f25db074 |
|
MD5 | 94a386f1458d4c2139e2e8402b6ffed1 |
|
BLAKE2b-256 | a5d698fe909d880c707b5da4b2a2ea201ba33c4678cb0c9126b95b0cc3201c7a |