Skip to main content
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

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.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.

Author

Jean-Sébastien Suzanne

Contributors

Anybox team:

  • Jean-Sébastien Suzanne

  • Florent Jouatte

Sensee team:

  • Julien SZKUDLAPSKI

  • Jean-Sébastien Suzanne

Bugs

Bugs and feature enhancements to AnyBlok should be reported on the Issue tracker.

CHANGELOG

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.

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

Release files for anyblok_bus 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for anyblok_bus 1.2.0
File Size Uploaded
anyblok_bus-1.2.0.tar.gz 19.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for anyblok_bus 1.2.0
File Interpreter ABI Platform
anyblok_bus-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 48.7 kB

Release files / anyblok_bus-1.2.0.tar.gz

Download URL anyblok_bus-1.2.0.tar.gz
Size 19.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a3ba26c4323aeb462dc9f284b35d19079e5d1df96d1428a338a72e6b1c9786df
BLAKE2b-256 checksum
How to use checksums
11fc19577f8458559479e6005fa296df9d36648c2f1a4acc70059f815c9f3769
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/3.5

Release files / anyblok_bus-1.2.0-py3-none-any.whl

Download URL anyblok_bus-1.2.0-py3-none-any.whl
Size 28.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20671d1b280813fae9726a0119e320c8e667be24b849ccd88327c4a4cf99151d
BLAKE2b-256 checksum
How to use checksums
80d8d4d955b7a73178524ed20d0c8773a9877c3f1f4c5f5947d68507e7d40989
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/3.5

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page