Skip to main content

Kstreams

kstreams is a library/micro framework to use with kafka. It has simple kafka streams implementation that gives certain guarantees, see below.

Build status codecov python version


Documentation: https://kpn.github.io/kstreams/


Installation

pip install kstreams

You will need a worker, we recommend aiorun

pip install aiorun

Usage

import aiorun
from kstreams import create_engine, ConsumerRecord


stream_engine = create_engine(title="my-stream-engine")

@stream_engine.stream("local--kstream")
async def consume(cr: ConsumerRecord):
    print(f"Event consumed: headers: {cr.headers}, payload: {cr.value}")


async def produce():
    payload = b'{"message": "Hello world!"}'

    for i in range(5):
        metadata = await stream_engine.send("local--kstreams", value=payload)
        print(f"Message sent: {metadata}")


async def start():
    await stream_engine.start()
    await produce()


async def shutdown(loop):
    await stream_engine.stop()


if __name__ == "__main__":
    aiorun.run(start(), stop_on_unhandled_errors=True, shutdown_callback=shutdown)

Features

  • Produce events
  • Consumer events with Streams
  • Subscribe to topics by pattern
  • Prometheus metrics and custom monitoring
  • TestClient
  • Custom Serialization and Deserialization
  • Easy to integrate with any async framework. No tied to any library!!
  • Yield events from streams
  • Opentelemetry Instrumentation
  • Middlewares
  • Hooks (on_startup, on_stop, after_startup, after_stop)
  • Store (kafka streams pattern)
  • Stream Join
  • Windowing

Development

This repo requires the use of poetry instead of pip. Note: If you want to have the virtualenv in the same path as the project first you should run poetry config --local virtualenvs.in-project true

To install the dependencies just execute:

poetry install

Then you can activate the virtualenv with

poetry shell

Run test:

./scripts/test

Run code formatting with ruff:

./scripts/format

Commit messages

We use conventional commits for the commit message.

The use of commitizen is recommended. Commitizen is part of the dev dependencies.

cz commit

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kstreams-0.34.2.tar.gz (36.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kstreams-0.34.2-py3-none-any.whl (45.6 kB view details)

Uploaded Python 3

File details

Details for the file kstreams-0.34.2.tar.gz.

File metadata

  • Download URL: kstreams-0.34.2.tar.gz
  • Upload date:
  • Size: 36.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.6 Linux/6.17.0-1020-azure

File hashes

Hashes for kstreams-0.34.2.tar.gz
Algorithm Hash digest
SHA256 9a696bd7c5139598296b3b338dc91405665f6915d6a373c0b4ee25d7f48d3153
MD5 c2d37976b24745f39f8b71c08740b022
BLAKE2b-256 3ad5cdfa881656263df128de37edc482d1a9fa3316d2b751ec3735f9f77327ab

See more details on using hashes here.

File details

Details for the file kstreams-0.34.2-py3-none-any.whl.

File metadata

  • Download URL: kstreams-0.34.2-py3-none-any.whl
  • Upload date:
  • Size: 45.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.14.6 Linux/6.17.0-1020-azure

File hashes

Hashes for kstreams-0.34.2-py3-none-any.whl
Algorithm Hash digest
SHA256 502be8cae9badc883cd330c27cf90c8f4d3a325f4e40f3cef6da587fea556639
MD5 18ec05ac87e89f80105df7d4dc59299e
BLAKE2b-256 018c18b1dc714e3f3162f3656d6cfa2e93bd64785c4ac2f9fa203fe84019c68f

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page