SDKPython
Python SDK
The Iggy Python SDK is a client library that allows you to interact with the Iggy API from your Python application. It is built as a PyO3 wrapper around the Rust SDK, which means it supports TCP, QUIC, HTTP, and WebSocket transports via connection strings. The package is available on PyPI and the source code can be found on GitHub.
Installation
pip install apache-iggyQuick start
Producer
from apache_iggy import IggyClient
from apache_iggy import SendMessage as Message
STREAM_NAME = "sample-stream"
TOPIC_NAME = "sample-topic"
PARTITION_ID = 0
client = IggyClient.from_connection_string("iggy+tcp://iggy:iggy@localhost:8090")
await client.connect()
await client.create_stream(name=STREAM_NAME)
await client.create_topic(
stream=STREAM_NAME,
name=TOPIC_NAME,
partitions_count=1,
replication_factor=1,
)
messages = []
for i in range(10):
payload = f"message-{i}"
message = Message(payload)
messages.append(message)
await client.send_messages(
stream=STREAM_NAME,
topic=TOPIC_NAME,
partitioning=PARTITION_ID,
messages=messages,
)Consumer
from apache_iggy import IggyClient, PollingStrategy, ReceiveMessage
STREAM_NAME = "sample-stream"
TOPIC_NAME = "sample-topic"
PARTITION_ID = 0
client = IggyClient.from_connection_string("iggy+tcp://iggy:iggy@localhost:8090")
await client.connect()
polled_messages = await client.poll_messages(
stream=STREAM_NAME,
topic=TOPIC_NAME,
partition_id=PARTITION_ID,
polling_strategy=PollingStrategy.Next(),
count=10,
auto_commit=True,
)
if polled_messages:
for message in polled_messages:
payload = message.payload().decode("utf-8")
print(f"Offset: {message.offset()}, Payload: {payload}")Examples
Working examples are available in the examples/python directory.