finds.dev← search

// the find

faust-streaming/faust

★ 1,875 · Python · NOASSERTION · updated Mar 2026

Python Stream Processing. A Faust fork

faust-streaming is a community-maintained fork of Robinhood's Faust library, which brings Kafka Streams-style stream processing to Python using asyncio. It's for Python teams who want to write stateful stream processors without leaving Python or learning a JVM framework. The fork exists because the original repo went dark and stopped releasing.

1. Tables backed by RocksDB give you durable, distributed key-value state that survives restarts — this is what separates Faust from just 'consume Kafka in Python'. 2. Pure Python with asyncio means you can drop in NumPy, SQLAlchemy, or any ML library directly in your stream processor without bridging layers. 3. The windowing support (tumbling, hopping, sliding) is real and battle-tested — Robinhood ran this against billions of events daily. 4. The fork is actively maintained with aiokafka updates and Kafka transaction support, which the original never shipped.

1. The asyncio threading model bites you hard if any dependency does blocking I/O — the FAQ's suggestion to use eventlet as a bridge is a workaround for a fundamental mismatch, not a solution. 2. RocksDB's partition-per-changelog-topic design means table recovery after a crash can be slow and resource-heavy; at scale, you'll hit the 'too many open files' problem mentioned in the FAQ. 3. Still only one transport driver (aiokafka) — no Redpanda, no Pulsar, no fallback if aiokafka has a bug or compatibility gap. 4. At ~1900 stars for a project with years of history and a claimed Robinhood production pedigree, adoption is narrow; you'll hit edge cases that nobody else has hit and filed an issue for yet.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →