Rol y Contexto:Actúa como un Ingeniero de Software Backend S...
Prompt
Rol y Contexto:Actúa como un Ingeniero de Software Backend Senior experto en Python y optimización de bases de datos relacionales.La Tarea:Diseña e implementa una API REST con FastAPI (o Flask/Django si lo prefieres) para un sistema de reserva de inventario de edición limitada (por ejemplo, entradas para un concierto o productos con stock muy bajo).Requisitos Técnicos Estrictos:Prevención de Sobreventa (Race Conditions): El sistema recibirá cientos de peticiones simultáneas para el mismo producto. Debes implementar una estrategia a nivel de base de datos (usando SQLAlchemy o SQL puro) que garantice que nunca se venda más del stock disponible. Explica e implementa si usarás Optimistic Locking (bloqueo optimista) o Pessimistic Locking (bloqueo pesimista) y por qué.Evitar el problema de consultas N+1: En el endpoint que lista los productos junto con sus categorías y el historial de las últimas 3 reservas, asegúrate de que el ORM realice la consulta de forma eficiente (usando los joins o cargas ansiosas / eager loading correctas) para evitar saturar la base de datos con micro-consultas.Gestión de Errores y Transacciones: Si el proceso de pago o confirmación falla a mitad de camino, la base de datos debe revertir (rollback) el stock modificado de forma limpia y segura.Script de Prueba de Concurrencia: Incluye un pequeño script utilizando asyncio y httpx (o threading) que simule a 50 usuarios intentando comprar el último artículo disponible al mismo tiempo, demostrando que solo 1 lo logra y los otros 49 reciben un error controlado (ej. HTTP 409 Conflict).Formato de Entrega:Estructura el código de forma limpia, separando las rutas de la lógica de negocio y los modelos de datos.Añade comentarios breves justificando tus decisiones de rendimiento en las consultas a la base de datos.