Low-level AMQP client for Python (fork of amqplib)
This library should be API compatible with librabbitmq.
Differences from amqplib
Supports draining events from multiple channels (Connection.drain_events)
Channels revive after channel error, instead of having to close the connection.
Support for timeouts
Support for heartbeats
- Connection.heartbeat_tick(rate=2) must called at regular intervals (half of the heartbeat value if rate is 2).
- Or some other scheme by using Connection.send_heartbeat.
- Supports RabbitMQ extensions:
- Consumer Cancel Notifications
- by default a cancel results in ChannelError being raised
- but not if a on_cancel callback is passed to basic_consume.
- Publisher confirms
- Exchange-to-exchange bindings: exchange_bind / exchange_unbind.
Support for basic_return
- Uses AMQP 0-9-1 instead of 0-8.
- Channel.access_request and ticket arguments to methods removed.
- Supports the arguments argument to basic_consume.
- internal argument to exchange_declare removed.
- auto_delete argument to exchange_declare deprecated
- insist argument to Connection removed.
- Channel.alerts has been removed.
- Support for Channel.basic_recover_async.
- Channel.basic_recover deprecated.
- Exceptions renamed to have idiomatic names:
- AMQPException -> AMQPError
- AMQPConnectionException -> ConnectionError``
- AMQPChannelException -> ChannelError``
- Connection.known_hosts removed.
- Connection no longer supports redirects.
- exchange argument to queue_bind can now be empty to use the “default exchange”.
Adds Connection.is_alive that tries to detect whether the connection can still be used.
Adds Connection.connection_errors and .channel_errors, a list of recoverable errors.
Exposes the underlying socket as Connection.sock.
Adds Channel.no_ack_consumers to keep track of consumer tags that set the no_ack flag.
Slightly better at error recovery
Differences between AMQP 0.8 and 0.9.1
AMQP 0.9.1 Quick Reference
For more information about AMQP, visit
For other Python client libraries see: