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

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.7.0.tar.gz (118.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.7.0-py3-none-any.whl (148.5 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for rabbitmq_amqp_python_client-0.7.0.tar.gz
Algorithm Hash digest
SHA256 e6f5a3a28a06d2febb291b0a5ab0e2e97bc19b7fd8e8d6c020a82f724d1d15cf
MD5 d22a94105549f45363e2656b6fd6d20e
BLAKE2b-256 c205a9393ebc6f2768abcdf3eed59c07201b1cbee82b9a8ec243929abcadba01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rabbitmq_amqp_python_client-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f5b300dff74a2435ccd41643ae7c1fc780e2aea9f794c80a429d283da429cd1
MD5 57350d48268353a77a03141d9095911b
BLAKE2b-256 24f91cf8ea3de1bdca0e29e8c8e9c091a3ef77588575190e1bbf7f10bbcb2d4a

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