Skip to main content

RabbitMQ app framework

Project description

PyPI - Python Version Build Status

RabbitBus

Feel RabbitMQ like HTTP

  • Custom CorrelationManagers
  • Regexp routes

Installation

RabbitBus requires Python 3.6 >, aioamqp.

Install the dependencies and library.

$ pip install rabbitbus

Example:

import asyncio
from rabbitbus.manager import DatabusApp, Configuration
from rabbitbus.acks.requests import AmqpRequest
from rabbitbus.acks.responses import AckResponse

async def my_view(request: AmqpRequest):
    # Write your code here
    return AckResponse(request)

def serve():
    loop = asyncio.get_event_loop()
    # Inherit from CorrelationManager for custom correlation storages
    app = DatabusApp(conf=Configuration())
    app.add_route(r'^CASH_REGISTER_EQUIPMENTS[a-zA-Z_]{4}$', my_view)
    app.start(loop)


if __name__ == '__main__':
    serve()

If message has reply_to property, you can make response like:

from rabbitbus.acks.requests import AmqpRequest
from rabbitbus.acks.responses import AckResponse

async def my_view(request: AmqpRequest):
    # Write your code here
    return AckResponse(request, data={"result": 1})

"reply_to" will be converted to the "routing_key" and message will be published to the app exchange. More about RPC you can read in RabbitMQ documentation

Sometimes you may need to pause consuming. Three method are to your needs:

app.pause_consuming()
app.continue_consuming()
app.is_paused() #bool to test if your app is paused

To send message from any view you can also use:

async def my_view(request: AmqpRequest):
    # Write your code here
    request.app.send_message(data={"test": True}, routing_key="TEST")
    return AckResponse(request)

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

rabbitbus-0.1.2.tar.gz (7.7 kB view details)

Uploaded Source

File details

Details for the file rabbitbus-0.1.2.tar.gz.

File metadata

  • Download URL: rabbitbus-0.1.2.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for rabbitbus-0.1.2.tar.gz
Algorithm Hash digest
SHA256 1a5dcb2ea7240c61eeae7276b1620913353918d847d9f43b683eeb35de4cc0da
MD5 aa89ee69a3525aa697e7342bc91a0c3f
BLAKE2b-256 b0fcb84fe32dd46df29b7b65d0bf3bc6ca4a72c0f1a0256a7bdd2a5c941ca240

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