Startup Sequence
Arranque Inteligente
main.py orquesta un 'Warmup' crítico antes de aceptar tráfico, garantizando latencia consistente desde el segundo cero.
Health Check
El endpoint /health devuelve "warming_up" (503) hasta que MODELS_LOADED=true. Kubernetes no enviará tráfico real hasta entonces.
¿Por qué Warmup?
Los modelos de embeddings y PII tardan segundos en cargarse en memoria GPU/CPU. Si aceptamos tráfico antes, el primer usuario sufriría un timeout o latencia extrema.
async def lifespan(app: FastAPI):
# ═══ STARTUP ═══
# 1. Warmup modelos ML (Evita latencia en 1er usuario)
await pii_guard.redact_pii_sync()
await reranker.get_reranker_model()
# 2. Recovery financiero (WAL)
asyncio.create_task(recover_pending_charges())
# 3. Sync de precios de mercado
asyncio.create_task(update_market_rules())
# 4. Marcar listo para K8s
app.state.MODELS_LOADED = True
yield # Servidor activo recibiendo tráfico
# ═══ SHUTDOWN ═══
await redis_client.close()
await supabase.close()
python