Bus for anyblok
Improve AnyBlok to add comunication with bus.
|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
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
The decorated method become a classmethod with always the same prototype (cls, body) body is the desarialization of the message from the queue by the schema.
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
A profile must be defined and selected by the AnyBlok configuration **bus_profile**
Information about the AnyBlok / Bus project.
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.
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.
Run the test with nose:
pip install nose nosetests anyblok_bus/tests
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
AnyBlok / Bus works with Python >= 3.4 and later and pika >= 1.0.1. The install process will ensure that AnyBlok is installed, in addition to other dependencies. The latest version of them is strongly recommended.
- Jean-Sébastien Suzanne
- Florent Jouatte
- Julien SZKUDLAPSKI
- Jean-Sébastien Suzanne
Bugs and feature enhancements to AnyBlok should be reported on the Issue tracker.
Update version to use pika >= 1.0.1
Fixed Multiple consumer on the same model
Refactored bus console script, Added processes parameter on bus_consumer. The goal is to define processes for one queue, by default all the queues are in the same process
Add better logging when a queue is missing. If a queue is missing, then workers won’t start.
Added adapter parameter to transform bus message, the schema attribute become now a simple kwargs argument give to adapter.
The adapter is not required.
To keep the compatibility, if no adapter is defined with a schema then the adapter is schema_adapter
- 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
- 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
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size & hash||File type||Python version||Upload date|
|anyblok_bus-1.2.0-py3-none-any.whl (28.8 kB) View hashes||Wheel||3.5|
|anyblok_bus-1.2.0.tar.gz (19.9 kB) View hashes||Source||None|
Hashes for anyblok_bus-1.2.0-py3-none-any.whl