How do you implement event-driven patterns in FastAPI with Kafka or Redis?

Answer

For event-driven patterns in FastAPI: Kafka with aiokafka: producer = AIOKafkaProducer(bootstrap_servers='localhost:9092'); await producer.start(). Publish events after handling requests: await producer.send('user-created', value=json.dumps(user_data).encode()). Consume in a background task started with app.on_event("startup"): asyncio.create_task(consume()). Redis Pub/Sub with aioredis: subscribe to channels for real-time messaging. Lifespan events (FastAPI 0.95+): @asynccontextmanager async def lifespan(app): # startup: connect producer, start consumer task; yield; # shutdown: stop consumer, close connections; app = FastAPI(lifespan=lifespan). This pattern is cleaner than deprecated @app.on_event. For outbox pattern: write events to DB atomically with business data, then publish from DB via Debezium CDC.