Faust 是一个流处理库,将想法从 Kafka Streams 移植到 Python。
它在 Robinhood 用于构建高性能的分布式系统和实时数据管道,每天处理数十亿个事件。
Faust 提供流处理和事件处理,与 Kafka Streams,Apache Spark / Storm / Samza / Flink 等工具共享相似性,
它不使用 DSL,它只是 Python!这意味着您可以在流处理时使用所有您喜欢的 Python 库:NumPy,PyTorch,Pandas,NLTK,Django,Flask,SQLAlchemy,++
Faust 需要 Python 3.6 或更高版本才能使用新的 async / await 语法和变量类型注释。
特性:
以下是处理传入订单流的示例:
# Python Streams ٩(◕‿◕)۶ # Forever scalable event processing & in-memory durable K/V store; # w/ asyncio & static typing. import faust app = faust.App('myapp', broker='kafka://localhost') # Models describe how messages are serialized: # {"account_id": "3fae-...", amount": 3} class Order(faust.Record): account_id: str amount: int @app.agent(value_type=Order) async def order(orders): async for order in orders: # process infinite stream of orders. print(f'Order for {order.account_id}: {order.amount}')