Middleware

Middleware allows you to process messages before they reach route handlers.

Topics

Quick Overview

Middleware processes messages in a chain before reaching the final handler:

from core.middleware import Middleware
from core.redis_manager import redis_manager
import time

class LoggingMiddleware(Middleware):
    async def handle(self, context, next_handler):
        """Log incoming messages with Redis integration"""
        start_time = time.time()
        topic = context['topic']
        
        self.logger.info(f"Processing message on topic: {topic}")
        
        # Increment message counter in Redis
        if redis_manager.is_enabled():
            await redis_manager.incr(f"stats:messages:{topic}")
            await redis_manager.incr("stats:messages:total")
        
        # Call the next handler in the chain
        result = await next_handler(context)
        
        # Log processing time
        processing_time = time.time() - start_time
        self.logger.info(f"Message processed in {processing_time:.3f}s")
        
        return result

Common Middleware Patterns

Authentication Middleware

Caching Middleware

Next Steps

Last updated