Python client library for the Cursus message broker with sync and async support.
- Producer — Partition batching, compression, idempotent delivery
- Consumer — Polling and streaming modes, consumer groups with rebalance handling
- EventStore — Event sourcing with optimistic concurrency, snapshots
- Sync + Async — Both
ProducerandAsyncProducer(and Consumer, EventStore)
- Python 3.10 or later
- A running Cursus broker (default port
9000)
pip install cursus-clientfrom cursus import Producer, ProducerConfig, Acks
config = ProducerConfig(
brokers=["localhost:9000"],
topic="my-topic",
partitions=4,
acks=Acks.ONE,
)
with Producer(config) as p:
seq = p.send("Hello, Cursus!")
p.flush()
print(f"acked={p.unique_ack_count}")from cursus import Consumer, ConsumerConfig, ConsumerMode
config = ConsumerConfig(
brokers=["localhost:9000"],
topic="my-topic",
group_id="my-group",
mode=ConsumerMode.STREAMING,
)
with Consumer(config) as consumer:
for msg in consumer:
print(f"offset={msg.offset} payload={msg.payload}")from cursus import AsyncProducer, ProducerConfig
async with AsyncProducer(ProducerConfig(topic="my-topic")) as p:
await p.send("Hello, async!")
await p.flush()pip install cursus-client[snappy] # Snappy compression
pip install cursus-client[lz4] # LZ4 compressionApache License 2.0. See LICENSE.