Skip to main content

Easy utilities for common RabbitMQ tasks

Project description

easyrabbit

Coverage Status

Build Status

Actually easy RabbitMQ utilities for common tasks. Hides the complexities of complete control packages like pika by wrapping common use cases in minimalistic wrappers.

Installation

You can install directly from git using pip:

pip install git+https://github.com/scnerd/easyrabbit

or from PyPi (not yet uploaded):

pip install easyrabbit

Usage

Simple routing

Reader

RoutingReader provides a fully asynchronous way to read from an exchange via a queue bound with a routing key. It launches a subprocess to free the calling program from being responsible for its computational overhead; within its own process, it uses pika’s asynchronous connection, enabling the highest possible performance client. The API exposed mimics a simple queue, if, after all, what you really want is to use a RabbitMQ queue as if it were a Python queue.

with RoutingReader(url, exchange, queue_name, routing_key) as reader:
    for msg in reader:
        print("Received the following message: {}".format(msg))

If the reader is needed persistently, you can also launch and terminate it yourself:

reader = RoutingReader(url, exchange, queue_name, routing_key)
reader.start()
# Do things with the reader
reader.close()

Note that even though the reader is asynchronous, you don’t need to wait for it to be ready before using it. All calls hang on the process pipe that sends data from the client process to your parent code. If you want to make sure that the connection is fully established before using it, however, you can use wait_till_ready:

reader = RoutingReader(url, exchange, queue_name, routing_key)
reader.start()
try:
    reader.wait_till_ready(timeout=5)
except TimeoutError:
    raise RuntimeError("RabbitMQ reader took more than 5 seconds to launch")

While reader.get is blocking, a non-blocking equivalent is reader.get_nowait, or your code can explicitly check that a value is available first using not reader.empty(). Iterating over reader just repeatedly calls get, and hence is blocking and will only end when the reader is closed. Use reader.getall_nowait() to obtain all values currently in the queue.

All result objects are byte arrays (or strings, in Python 2)

Writing

The analogous utility for writing is RoutingWriter, which provides a nearly identical interface for writing messages to RabbitMQ

with RoutingWriter(url, exchange, routing_key) as writer:
    for msg in msgs:
        writer.put(msg)

RoutingWriter exposes much the same API as RoutingReader, except of course exposing put instead of get.

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

easyrabbit-0.0.2.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

easyrabbit-0.0.2-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file easyrabbit-0.0.2.tar.gz.

File metadata

  • Download URL: easyrabbit-0.0.2.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for easyrabbit-0.0.2.tar.gz
Algorithm Hash digest
SHA256 4ae142f60131ee63d0576134344f19385713cf11a55d0805c8ae3fd0ac622a3f
MD5 831039fd4f55dfa3918d8fdbbbee10c8
BLAKE2b-256 2a686c7398956b0fe419c0c7775f2b56a58bc425d5a6f354e91018080c7c8d3a

See more details on using hashes here.

File details

Details for the file easyrabbit-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for easyrabbit-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f52a58d0eb98b1700ddaa9f3052c91ceb7a0d06be84ce512fa586e8e09cc7f7a
MD5 ba1fbfbd72b2a3063140b12c55aad76f
BLAKE2b-256 c5cb04eb06be779cd6e77090e262a703a435c836284fbcc993faf0b26670ef5e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page