# Litestar: Enterprise-ready out-of-the-box
from litestar import Litestar
from litestar.plugins import RedisPlugin
from litestar.middleware import RateLimitMiddleware
import msgspec
class User(msgspec.Struct): # 2x faster than Pydantic
id: int
name: str
redis_plugin = RedisPlugin(connection_string="redis://localhost")
@get("/users/{user_id}")
async def get_user(user_id: int, redis: Redis = Provide[redis_plugin]) -> User:
cached = await redis.get(f"user:{user_id}")
if cached: return msgspec.json.decode(cached)
user = await db.fetch_user(user_id) # Auto-serialized
await redis.setex(f"user:{user_id}", 300, msgspec.json.encode(user))
return user
app = Litestar(
route_handlers=[get_user],
plugins=[redis_plugin],
middleware=[RateLimitMiddleware("100/minute")],
openapi_config={"title": "Enterprise API", "version": "3.1.0"}
)