faust-streaming
Python Stream Processing. A Faust fork
What it is and what it does
Faust-streaming is a fork of the original Faust project that brings Kafka Streams semantics to Python using async/await and static typing. It lets you write stream processors as simple Python functions decorated with @app.agent(), consuming from Kafka topics and processing events asynchronously. The library handles distributed state through Tables—persistent, replicated key-value stores backed by RocksDB—allowing you to maintain aggregate counts, windowed metrics, and other stateful computations across a cluster of worker instances.
The package is designed for high-throughput, low-latency event processing pipelines. It supports windowing (tumbling, hopping, sliding), automatic failover via standby replicas, and changelog topics for durability. Unlike other stream frameworks, Faust requires only Kafka and Python—no DSL, no separate cluster manager—making it straightforward to integrate with existing Python libraries like NumPy, Pandas, or Django.
Use it for:
- Count page views or events by URL/key using windowed tables and Kafka topic partitioning
- Process order streams with stateful validation, enrichment, and async side effects like email notifications
- Build real-time dashboards by aggregating metrics into tables that are replicated across worker nodes
- Implement event-driven microservices that react to Kafka events with custom business logic
- Migrate from Kafka Streams (Java) to Python while preserving stream topology and state semantics
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Faust-streaming is a Python library for building stream processing applications that consume from Kafka topics, perform stateful transformations, and persist distributed key-value state using RocksDB.
Yes, if you need to build distributed stream processing applications in Python with Kafka. The fork is actively maintained, supports modern Python versions (3.10–3.14), has no known vulnerabilities, and offers a permissive license. Install friction is moderate due to multiple dependencies, but pre-built wheels reduce friction. Not recommended if you need a simpler event queue or if your team lacks async/await experience.
Install
faust-streaming on PyPI
pip
pip install faust-streaminguv
uv add faust-streamingpoetry
poetry add faust-streamingInstalling faust-streaming
Before you install
Medium install friction due to 12 runtime dependencies including aiokafka, aiohttp, and mode-streaming. The package is actively maintained with a recent release (4 days old) and supports Python 3.10–3.14 across macOS, Linux, and Windows with pre-built wheels.
License in practice
BSD 3-Clause license is permissive and GPL-compatible, allowing use in proprietary and open-source projects without requiring derivative works to be open-sourced. Documentation is separately licensed under CC BY-SA 4.0.
Quickstart
pip install faust-streaming
import faust
app = faust.App('myapp', broker='kafka://localhost')
class Order(faust.Record):
account_id: str
amount: int
@app.agent(value_type=Order)
async def process_orders(orders):
async for order in orders:
print(f'Order: {order.account_id} - {order.amount}')
Requires a running Kafka broker; Python 3.10 or later; familiarity with async/await syntax recommended.
Verify before relying
- Whether RocksDB is bundled or requires separate system installation
- Performance characteristics (throughput, latency) for production workloads
- Compatibility guarantees with specific Kafka versions
Package facts
| License | Copyright (c) 2017-2020, Robinhood Markets, Inc. All rights reserved. Faust is licensed under The BSD License (3 Clause, also known as the new BSD license). The license is an OSI approved Open Source… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.10.0) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 12 — aiohttp, aiohttp_cors, aiokafka, click, mode-streaming, terminaltables, yarl, croniter, mypy_extensions, venusian, intervaltree, six |
| Maintenance | actively maintained — 4 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 387,857/month — #7,041 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: faust_streaming-0.13.2-cp310-cp310-macosx_10_9_x86_64.whl; faust_streaming-0.13.2-cp310-cp310-macosx_11_0_arm64.whl; faust_streaming-0.13.2-cp310-cp310-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl; faust_streaming-0.13.2-cp310-cp310-win_amd64.whl; faust_streaming-0.13.2-cp311-cp311-macosx_10_9_x86_64.whl; faust_streaming-0.13.2-cp311-cp311-macosx_11_0_arm64.whl; faust_streaming-0.13.2-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl; faust_streaming-0.13.2-cp311-cp311-win_amd64.whl; faust_streaming-0.13.2-cp312-cp312-macosx_10_13_x86_64.whl; faust_streaming-0.13.2-cp312-cp312-macosx_11_0_arm64.whl; faust_streaming-0.13.2-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl; faust_streaming-0.13.2-cp312-cp312-win_amd64.whl; faust_streaming-0.13.2-cp313-cp313-macosx_10_13_x86_64.whl; faust_streaming-0.13.2-cp313-cp313-macosx_11_0_arm64.whl; faust_streaming-0.13.2-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl; faust_streaming-0.13.2-cp313-cp313-win_amd64.whl; faust_streaming-0.13.2-cp314-cp314-macosx_10_15_x86_64.whl; faust_streaming-0.13.2-cp314-cp314-macosx_11_0_arm64.whl; faust_streaming-0.13.2-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl; faust_streaming-0.13.2-cp314-cp314-win_amd64.whl
Keywords: stream, processing, asyncio, distributed, queue, kafka
Tags
More Distributed Computing packages
gRPC Python is an HTTP/2-based RPC framework…
permissive · top 100 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
cloudpickleCloudpickle extends Python's standard pickle…
permissive · top 1,000 on PyPI
smart-openProvides a unified, open()-compatible Python…
permissive · top 1,000 on PyPI
portalockerPortalocker provides cross-platform file…
permissive · top 1,000 on PyPI
rayRay is a distributed computing framework that…
permissive · top 1,000 on PyPI
quixstreamsQuix Streams is a Python framework for building…
permissive · top 15,000 on PyPI
apache-flink-librariesBundles Apache Flink's required libraries for…
permissive · top 15,000 on PyPI
faststreamAn asynchronous Python framework for building…
permissive · top 5,000 on PyPI
broadcasterBroadcaster provides a simple async broadcast…
permissive · top 15,000 on PyPI
kafkaA pure-Python client library for Apache Kafka…
permissive · top 15,000 on PyPI
aiokafkaaiokafka is an asyncio-based client library for…
permissive · top 5,000 on PyPI
kafka-pythonPure-Python Apache Kafka client library…
permissive · top 1,000 on PyPI
crickCrick provides approximate and streaming…
permissive · top 15,000 on PyPI
stream-pythonOfficial Python client library for Stream Feeds…
permissive · top 5,000 on PyPI
django-activity-streamDjango Activity Stream generates and displays…
permissive · top 15,000 on PyPI