Skip to content

cursus-io/cursus-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cursus Python Client

Python client library for the Cursus message broker with sync and async support.

Features

  • 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 Producer and AsyncProducer (and Consumer, EventStore)

Requirements

  • Python 3.10 or later
  • A running Cursus broker (default port 9000)

Quick Start

Install

pip install cursus-client

Send a message

from 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}")

Consume messages

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}")

Async

from cursus import AsyncProducer, ProducerConfig

async with AsyncProducer(ProducerConfig(topic="my-topic")) as p:
    await p.send("Hello, async!")
    await p.flush()

Optional dependencies

pip install cursus-client[snappy]    # Snappy compression
pip install cursus-client[lz4]       # LZ4 compression

License

Apache License 2.0. See LICENSE.

About

Cursus python client

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages