// the find
celery/kombu
Messaging library for Python.
Kombu is the messaging abstraction layer that Celery is built on, exposing AMQP concepts (exchanges, queues, routing keys) with pluggable transports behind a consistent API. If you're using Celery, you're already using Kombu. If you want Celery-style messaging without Celery's task machinery, this is the library.
The transport abstraction is genuinely well-designed — you write against one API and swap between RabbitMQ, Redis, SQS, or even in-memory (useful for tests) without changing application code. The in-memory transport for unit testing is a real time-saver; no broker required in CI. Connection retry and failover handling is built in via the `ensure` mechanism, which handles transient broker failures without requiring you to write retry loops yourself. The transport comparison table in the README is honest about capability gaps (e.g., SQS fanout requiring SNS, Redis lacking TTL) rather than glossing over them.
The async story is fragmented — there's a `kombu.asynchronous` module with a custom event loop and curl-based HTTP, but it predates asyncio and doesn't integrate with it cleanly. If you're on an async Python stack, you'll hit friction fast. Several transports (ZooKeeper, Pyro, SLMQ, MongoDB) look maintained in name only — sparse test coverage and no real-world adoption signals. The virtual transport model emulates AMQP semantics on non-AMQP brokers, which means you get exchange/queue declarations stored only in memory per-client; any client restart loses the topology, and fanout requires all consumers to be running at declaration time.