Skip to main content

Python RabbitMQ client for AMQP 1.0 protocol

Project description

RabbitMQ AMQP 1.0 Python Client

This library is meant to be used with RabbitMQ 4.x. Suitable for testing in pre-production environments.

The client is distributed via PIP:

 pip install rabbitmq-amqp-python-client

Getting Started

Inside the examples folder you can find a set of examples that show how to use the client.

Documentation

Client Guide select the python section.

Build

  • make rabbitmq-server: run the RabbitMQ server in a docker container
  • poetry build: build the source project
  • poetry install: resolves and install dependencies
  • make test: run the tests

Note for MAC users:

To run TLS you need to:

- pip uninstall python-qpid-proton
- brew install swig
- brew install pkg-config
- export CFLAGS="-I/usr/local/opt/openssl/include"; pip install python-qpid-proton --verbose --no-cache-dir

Read more about the issue here

SSL Problems in local environment

If when running tests, this exceptions is raised by the proton library: SSLUnavailable:

pip uninstall python-qpid-proton -y

sudo apt-get update
sudo apt-get install -y swig cmake build-essential libssl-dev pkg-config

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
export CFLAGS="-I/usr/include/openssl"
export LDFLAGS="-L/usr/lib/x86_64-linux-gnu"

pip install "python-qpid-proton>=0.39.0,<0.40.0" --no-binary python-qpid-proton --verbose --no-cache-dir

Async Interface (Experimental)

The client provides an async interface via the rabbitmq_amqp_python_client.asyncio module. The async classes act as facades that:

  • Wrap the corresponding synchronous classes
  • Execute blocking operations in a thread pool executor using run_in_executor
  • Coordinate concurrent access using asyncio.Lock
  • Implement proper async context managers (async with) for resource management
  • Maintain API compatibility with the synchronous version

Key differences from the synchronous interface:

  1. Use AsyncEnvironment instead of Environment
  2. All operations must be awaited with await
  3. Use async with for resource management (connections, publishers, consumers, management)
  4. Consumer signal handling uses asyncio.Event and loop.add_signal_handler

For a complete example showing proper consumer termination and signal handling, refer to:

Additional async examples are available in the examples folder:

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

rabbitmq_amqp_python_client-0.6.0.tar.gz (115.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rabbitmq_amqp_python_client-0.6.0-py3-none-any.whl (144.9 kB view details)

Uploaded Python 3

File details

Details for the file rabbitmq_amqp_python_client-0.6.0.tar.gz.

File metadata

File hashes

Hashes for rabbitmq_amqp_python_client-0.6.0.tar.gz
Algorithm Hash digest
SHA256 a4565daf51c28befa41e6647e01bacfe9715c7b1c57b87a3ebaf93a4c32c7a4c
MD5 1ceea319a755cb1dc31a66a3c97e74ef
BLAKE2b-256 7873241d672e94f5225eef1958b7b5300bd5a4a0813424b3bb62a5aed1bde7c4

See more details on using hashes here.

File details

Details for the file rabbitmq_amqp_python_client-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for rabbitmq_amqp_python_client-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a6b605d3e78cfb055eceaf79737c52578c7ab52c5bdc79c4abcd60f28ca2af0
MD5 d805ff8b22196dce3af0cf94210aaa44
BLAKE2b-256 786987e85d4fba969ada74a07cc989d927940568910c799f0521d5be2d729ba4

See more details on using hashes here.

Supported by

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