Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

Bus for anyblok

Project description

Python versions Build status Coverage Version status Documentation Status

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


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

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.

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


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 Source code is tracked here using GIT.

Releases and project status are available on Pypi at

The most recent published version of this documentation should be at


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 script:

python install

Installation will add the anyblok commands to the environment.

Unit Test

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


Anybox team:

  • Jean-Sébastien Suzanne
  • Florent Jouatte

Sensee team:

  • Jean-Sébastien Suzanne


1.2.0 (2019-06-24)

  • 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

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.

Files for anyblok_bus, version 1.2.0
Filename, size File type Python version Upload date Hashes
Filename, size anyblok_bus-1.2.0-py3-none-any.whl (28.8 kB) File type Wheel Python version 3.5 Upload date Hashes View
Filename, size anyblok_bus-1.2.0.tar.gz (19.9 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page