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.

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

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:

Thread Safety

The TCP connection is not thread safe. If you want to use the client in a multithreaded environment, you should create a connection per thread.

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.8.0.tar.gz (119.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.8.0-py3-none-any.whl (149.6 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for rabbitmq_amqp_python_client-0.8.0.tar.gz
Algorithm Hash digest
SHA256 933dfe283d77ceb7dfd74932e5c647bb6c8385203f8a508be276184d526fd8cd
MD5 6c1625e6b67a4ed1be1bc96e3741c8d8
BLAKE2b-256 8f0675073e335e66c113f776899031c574a132bc15df4cc4f1854254316e76f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rabbitmq_amqp_python_client-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 545b357f5025ae5ee0ee673b87ea7757164b87c9e216306ae45db9e358c66f7c
MD5 ed73670edac103d81acab093f9d9d95b
BLAKE2b-256 fc638c96dd4e79ff65360e44c1333d18ff7fe6d19cc2cd6484cc1372c705748f

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