Skip to content
Snippets Groups Projects

CoolAMQP

Documentation Status PyPI version Build Status Code Climate Test Coverage license PyPI PyPI

A magical AMQP client, that uses heavy sorcery to achieve speeds that other AMQP clients cannot even hope to match.

Documentation (WIP) is available at Read the Docs.

tl;dr - this is machine-generated compile-time. this generates classes run-time, and there are memoryviews everywhere.

This is borderline absurd.

CoolAMQP is not a direct AMQP client - it also handles reconnections, transactional sending, and so on, mostly via Futures. This means it has a certain opinion on how to handle AMQP, but you can feel the spirit of AMQP underneath.

The project is actively maintained and used in a commercial project. Tests can run either on Vagrant (Vagrantfile attached) or Travis CI, and run against RabbitMQ.

CoolAMQP won't touch your messages. It's your bag of bytes, and your properties.

Enjoy!

Watch out for memoryviews!

Notes

Assertions are sprinkled throughout the code. You may wish to run with optimizations enabled if you need every CPU cycle you can get.

v0.8x series has unstable API. It probably won't change much

v0.9x series will have a stable API.

Current limitations

  • channel flow mechanism is not supported (#11)
  • confirm=True is not available if you're not RabbitMQ (#8)
  • no Windows support (#9)

What's new

  • v0.89:

    • Events are no longer timestamped by CoolAMQP, it's your job now
    • You can delete queues (Cluster.delete_queue)
    • Race condition Connection.start fixed
    • Queue can accept bytes as name
    • Consumer will set cancelled to True if Consumer Cancel Notification is received
    • You can register callbacks for:
      • Consumer being cancelled for any reason
      • Consumer being cancelled with a CCN
  • v0.88:

    • Cluster.start will RuntimeError if called more than once
    • Cluster.shutdown will RuntimeError if called without .start
    • Warning with content list is shorter