Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La API de Claude devuelve 529 el tipo overloaded_error de error cuando la API está sobrecargada temporalmente. Según Anthropic, puede ocurrir cuando la API experimenta un tráfico elevado en todos los usuarios. Su solicitud está bien. La API está ocupada, por lo que rechazó la solicitud. Cuando su organización supere sus propios límites de tasa, obtendrá un valor de 429 en su lugar. El cuerpo de la respuesta tiene la misma forma que todos los demás errores de la API de Claude: un type de nivel superior de error, un objeto error con type y message, y un request_id que puedes proporcionar al soporte de Anthropic. Para obtener más información, consulte Errores de la API de Claude.
529, 429 o límite de gasto: cómo separarlos
La API de Claude usa errores de aspecto similar para problemas muy diferentes. Algunos desaparecen si esperas. Uno no desaparece hasta el mes siguiente.
| Respuesta | error.type |
retry-after |
Qué significa | Qué hacer |
|---|---|---|---|---|
529 |
overloaded_error |
Úselo si está ahí | La API se sobrecarga en todos los usuarios | Espere un poco y vuelva a intentarlo varias veces |
429 |
rate_limit_error |
Yes | Su organización ha superado sus solicitudes, tokens de entrada o tokens de salida por minuto, o ha aumentado demasiado rápido y alcanza un límite de aceleración. | Espere tanto tiempo como diga retry-after |
429 |
rate_limit_error, con error.details.error_code establecido en enforced_spend_limit_reached |
No | Su organización alcanzó el límite de gasto mensual del nivel de uso. | No vuelva a intentarlo. El uso se detiene hasta las 00:00 UTC del primer día del mes siguiente o hasta que cambies a un nivel superior. |
400 |
invalid_request_error |
No | El uso alcanzó un límite de gasto establecido en su organización o área de trabajo. | Aumentar o quitar el límite |
Un límite de gasto 429 tiene el mismo tipo de error que un límite de velocidad, por lo que el código que reintenta cada rate_limit_error uno sigue fallando. Anthropic señala que los reintentos fallan hasta que se reanuda el acceso, incluidos los reintentos automáticos del SDK. Para obtener más información, consulte Alcanzar tu límite de gasto.
Cómo gestionar un 529
- Compruebe el código de estado antes de volver a intentarlo. Un
529y una429necesidad de esperas diferentes, y un429sinretry-afternecesidad de reintento en absoluto. - Reconsidere un 529. Vuelva a intentarlo con retroceso exponencial y vibración aleatoria, y detenga después de algunos intentos. Si la respuesta tiene un
retry-afterencabezado, espere ese tiempo en su lugar. - Deje que el SDK realice los primeros reintentos. Los SDK oficiales Anthropic reintentan los errores de conexión, los límites de tasa y los errores 5xx dos veces de forma predeterminada, con retroceso exponencial y respetan
retry-aftercuando está presente. Puede cambiar el recuento conmax_retries(maxRetriesen TypeScript). Cuando el SDK se queda sin reintentos, tu código recibe el error. - Detenga el reintento al alcanzarse un límite de gasto. Si un 429 no tiene ningún encabezado
retry-after, indique al usuario y avísese. - Mantenga informado al usuario. Poner en cola el trabajo e intentarlo más tarde o mostrar un mensaje "ocupado, inténtelo de nuevo en un minuto" en lugar de un error genérico.
En el SDK de Python, un 429 genera anthropic.RateLimitError y cualquier estado de 500 o superior, incluido 529, genera anthropic.InternalServerError:
import anthropic
client = anthropic.Anthropic(max_retries=4)
def summarize(text: str) -> str | None:
try:
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": f"Summarize:\n\n{text}"}],
)
except anthropic.RateLimitError as e:
if "retry-after" not in e.response.headers:
# Spend cap: every retry fails until access resumes
alert_admin(e)
return None
raise
except anthropic.InternalServerError as e:
if e.status_code == 529:
# Overloaded after all SDK retries: queue the job for later
queue_for_later(text)
return None
raise
return next(block.text for block in message.content if block.type == "text")
Cómo probar que la aplicación controla un 529
Rara vez ves un 529 mientras desarrollas. Depende del tráfico de todos los usuarios de Claude API, por lo que no se puede desencadenar. La forma de probar decide si encuentra los errores antes de que los usuarios lo hagan.
| Approach | Lo que encuentras | Lo que te pierdes |
|---|---|---|
| Esperar a producción | Sobrecargas reales | Todo, hasta que un usuario haga clic en él |
| Simula la API en tus pruebas o deja que tu agente de programación escriba el mock | Que se ejecute la rama de error | Los códigos de estado real y los cuerpos de error de Anthropic, y la directiva de reintento del SDK. La aplicación también necesita una opción solo de prueba para acceder al mock. |
| Llama a la API real hasta que se produce un error | Comportamiento real | No se puede provocar un error 529 manualmente, y no se puede activar de forma segura un límite de gasto en absoluto |
| Intercepte el tráfico real de la aplicación y devuelva 529 y 429s a petición | Direcciones URL reales, el SDK real, la directiva de reintento y el propio formato de error de Anthropic | Nada en tu aplicación cambia, por lo que no prueba tu código de forma aislada. Mantenga las pruebas unitarias para eso. |
Pruébalo en tu app
El proxy de desarrollo intercepta las solicitudes de la aplicación a https://api.anthropic.com y devuelve errores en el formato de error de Anthropic, mientras que la aplicación sigue llamando a la dirección URL real. Descargue un ajuste preestablecido e inicie Dev Proxy con él:
devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
| Preset | Lo que devuelve |
|---|---|
anthropic-throttling |
Al azar, 1 de 4 respuestas 429 rate_limit_error (solicitudes, tokens de entrada, tokens de salida y límite de aceleración) o un 529 overloaded_error. En los 429s, Dev Proxy establece retry-after y le indica cuándo la aplicación llama a la API de nuevo demasiado pronto. |
anthropic-random-errors |
Al azar, uno de los errores de la lista de errores de La API de Claude, incluidos 400, 401, 402, 403, 404, 409, 413, 429, 500, 504 y 529, para 50% de solicitudes |
Ninguno de los valores preestablecidos incluye un límite de gasto 429. Para probar esa ruta de acceso, agregue una respuesta sin un encabezado retry-after al archivo del anthropic-errors.json valor preestablecido:
{
"statusCode": 429,
"headers": [
{ "name": "content-type", "value": "application/json" }
],
"body": {
"type": "error",
"error": {
"type": "rate_limit_error",
"message": "You have reached your API usage limits.",
"details": { "error_code": "enforced_spend_limit_reached" }
}
}
}
Para que se produzca un error en todas las solicitudes, para que vea lo que sucede cuando el SDK se queda sin reintentos, inicie Dev Proxy con --failure-rate 100. Para obtener más información, consulte Tasa de fallos de las solicitudes de cambio. Para instalar Dev Proxy, consulte Configurar Dev Proxy.