Limitación de velocidad y gestión de cuotas
Aplique cuotas por usuario, organización y endpoint para que un único inquilino no agote su presupuesto de OpenAI.
Limitación de velocidad y gestión de cuotas es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
¿Por qué establecer límites?
Sin límites, un solo cliente abusivo puede:
- Agotar su presupuesto de OpenAI
- Desplazar a los demás usuarios
- Dejar su servicio fuera de servicio mediante un DDoS
Los límites de solicitudes y las cuotas protegen los costes, la latencia y la equidad.
Límite de solicitudes frente a cuota
- Límite de solicitudes — solicitudes por segundo/minuto (a corto plazo)
- Cuota — presupuesto total por día/mes (a largo plazo)
Necesita ambos.
Algoritmo del bucket de tokens
El algoritmo clásico: cada usuario tiene un «bucket» que se rellena a una velocidad fija. Cada solicitud consume un token. Si no hay tokens, no hay servicio.
Redis Token Bucket Example
def allow(user_id, rate=10, capacity=30):
key = f'rate:{user_id}'
now = time.time()
pipe = redis.pipeline()
pipe.hgetall(key)
state, _ = pipe.execute()
tokens = float(state.get('tokens', capacity))
last = float(state.get('last', now))
tokens = min(capacity, tokens + (now - last) * rate)
if tokens < 1:
return False
tokens -= 1
redis.hset(key, mapping={'tokens': tokens, 'last': now})
redis.expire(key, 60)
return TrueFastAPI Integration with slowapi
# pip install slowapi
from slowapi import Limiter
from slowapi.util import get_remote_address
limiter = Limiter(key_func=get_remote_address)
app.state.limiter = limiter
@app.post('/agents/qa')
@limiter.limit('10/minute')
def qa(req: AgentRequest):
...Different Limits Per Tier
class User:
def __init__(self, is_pro):
self.is_pro = is_pro
class State:
def __init__(self, is_pro):
self.user = User(is_pro)
class Req:
def __init__(self, is_pro):
self.state = State(is_pro)
def limit_for(req):
return '100/minute' if req.state.user.is_pro else '10/minute'
def qa(req):
limit = limit_for(req)
print(f'user is_pro={req.state.user.is_pro} -> rate limit {limit}')
return limit
qa(Req(is_pro=True))
qa(Req(is_pro=False))
Cuotas basadas en costes
Limite los dólares, no solo las solicitudes:
def check_budget(user_id, predicted_cost):
key = f'cost:{user_id}:{date.today()}'
spent = float(redis.get(key) or 0)
if spent + predicted_cost > daily_budget(user_id):
raise HTTPException(429, 'Daily budget exceeded')
# After the call:
redis.incrbyfloat(key, actual_cost)
redis.expireat(key, midnight_tomorrow_ts)Límites de concurrencia
Limite también las solicitudes en curso por usuario:
key = f'inflight:{user_id}'
redis.sadd(key, request_id)
if redis.scard(key) > 3:
raise HTTPException(429, 'Too many concurrent requests')
# Remove from set when the request finishes.Límite de solicitudes global
Proteja las API de LLM posteriores de su propio servicio:
global_key = 'rate:global:llm'
if redis.incr(global_key) > 60: # 60 calls per second
raise HTTPException(503, 'Service overloaded')
redis.expire(global_key, 1)Return Useful Errors
headers = {
'X-RateLimit-Limit': '60',
'X-RateLimit-Remaining': '0',
'X-RateLimit-Reset': str(reset_time),
'Retry-After': '30'
}
return JSONResponse({'error': 'rate-limited'}, status_code=429, headers=headers)Límites de solicitudes distribuidos
Si ejecuta varios servidores de API, los límites de solicitudes deben compartirse. Redis es el backend estándar; Cloudflare y Kong ofrecen alternativas gestionadas.
Permisos para ráfagas
El uso real se produce en ráfagas. Permita una ráfaga pequeña (por ejemplo, 30 solicitudes a la vez si la velocidad es de 10 por segundo). Las implementaciones de bucket de tokens gestionan esto de forma natural con un valor mayor de `capacity`.
Alertas
Genere una alerta cuando:
- Los avisos por alcanzar el límite global de solicitudes se activen más de X veces por minuto
- Cualquier usuario alcance su límite de forma constante (probablemente necesite una mejora del plan o tenga un error)
- El presupuesto diario se acerque al 80 %
Protección en dos capas
¿Por qué tener TANTO límites de solicitudes COMO cuotas?
Resumen
Bucket de tokens para los límites de solicitudes, contadores de costes para las cuotas, límites de concurrencia por usuario, circuit breaker global y respuestas 429 útiles con Retry-After.
Preguntas frecuentes
¿La lección «Limitación de velocidad y gestión de cuotas» es gratis?
Sí — el texto completo de «Limitación de velocidad y gestión de cuotas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.
¿Qué aprenderé en «Limitación de velocidad y gestión de cuotas»?
Aplique cuotas por usuario, organización y endpoint para que un único inquilino no agote su presupuesto de OpenAI. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Agents?
No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Limitación de velocidad y gestión de cuotas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Agents?
Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Servir agentes detrás de una API
- Flujos de trabajo asíncronos y trabajos en segundo plano
- Limitación de velocidad y gestión de cuotas
- Despliegues blue-green y canary para agentes