Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Claude-API retourneert 529 met het fouttype overloaded_error wanneer de API tijdelijk overbelast is. Volgens Anthropic kan dit gebeuren wanneer de API veel verkeer onder alle gebruikers ondervindt. Uw verzoek is prima. De API is bezet, dus heeft het verzoek afgewezen. Wanneer uw organisatie de eigen frequentielimieten heeft overschreden, krijgt u in plaats daarvan een 429-fout. De hoofdtekst van het antwoord heeft dezelfde vorm als elke andere Claude API-fout: een topniveau type van error, een error object met type en message, en een request_id die u aan de Anthropic-support kunt geven. Zie Claude API-fouten voor meer informatie.
529, 429 of bestedingslimiet: hoe je ze uit elkaar kunt houden
De Claude-API maakt gebruik van foutmeldingen die op elkaar lijken voor zeer verschillende problemen. Sommigen gaan weg als je wacht. Iemand gaat pas volgende maand weg.
| Antwoord | error.type |
retry-after |
Wat betekent het? | Wat moet u doen? |
|---|---|---|---|---|
529 |
overloaded_error |
Gebruik het als het er is | De API is overbelast bij alle gebruikers | Even wachten en een paar keer opnieuw proberen |
429 |
rate_limit_error |
Yes | Uw organisatie heeft de aanvragen, invoertokens of uitvoertokens per minuut overschreden of is te snel omhoog gegaan en een versnellingslimiet bereikt | Wacht zolang als retry-after aangeeft |
429 |
rate_limit_error, met error.details.error_code ingesteld op enforced_spend_limit_reached |
No | Uw organisatie heeft de maandelijkse uitgavenlimiet van het gebruiksniveau bereikt | Probeer het niet opnieuw. Het gebruik wordt onderbroken tot 00:00 UTC op de eerste dag van de volgende maand of totdat u naar een hogere abonnementslaag gaat. |
400 |
invalid_request_error |
No | Uw verbruik heeft een bestedingslimiet bereikt die u hebt ingesteld voor uw organisatie of werkruimte | De limiet verhogen of verwijderen |
Een bestedingslimiet 429 heeft hetzelfde fouttype als een frequentielimiet, dus code die elke rate_limit_error opnieuw probeert, blijft mislukken. Anthropic merkt op dat nieuwe pogingen mislukken totdat de toegang wordt hervat, inclusief de automatische nieuwe pogingen van de SDK. Zie Uw uitgavenlimiet bereiken voor meer informatie.
Omgaan met een 529
- Controleer de statuscode voordat u het opnieuw probeert. Een
529en een429hebben een andere wachttijd nodig, en een429zonderretry-afterhoeft helemaal niet opnieuw geprobeerd te worden. - Minder inzetten op een 529. Probeer het opnieuw met exponentiële backoff en willekeurige jitter en stop na een paar pogingen. Als het antwoord een
retry-afterheader heeft, wacht u in plaats daarvan die tijd. - Laat de SDK de eerste herhalingspogingen uitvoeren. De officiële Anthropic SDK's proberen standaard twee keer opnieuw bij verbindingsfouten, ratelimieten en 5xx-fouten, met exponentieel uitstel, en houden rekening met
retry-afterwanneer deze aanwezig is. U kunt het aantal wijzigen metmax_retries(maxRetriesin TypeScript). Wanneer de SDK geen retries meer over heeft, krijgt uw code de fout. - Stop met opnieuw proberen wanneer een bestedingslimiet is bereikt. Als een 429 geen
retry-afterheader heeft, informeer de gebruiker en waarschuw uzelf. - Houd de gebruiker op de hoogte. Plaats het werk in de wachtrij en probeer het later opnieuw, of toon een duidelijke melding "bezig, probeer het over een minuut opnieuw" in plaats van een algemene foutmelding.
In de Python-SDK veroorzaakt een 429 anthropic.RateLimitError, en elke status van 500 of hoger, inclusief 529, veroorzaakt 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")
Hoe u kunt testen of uw app een 529 correct verwerkt
U ziet zelden een 529 terwijl u ontwikkelt. Het hangt af van het verkeer van alle Claude API-gebruikers, dus u kunt het niet activeren. De manier waarop u test, bepaalt of u de bugs vindt voordat uw gebruikers dat doen.
| Approach | Wat u vindt | Wat u mist |
|---|---|---|
| Wachten op productieomgeving | Werkelijke overbelastingen | Alles, tot een gebruiker het aanraakt |
| Mock de API in je tests, of laat je coding agent de mock schrijven | Of uw foutbranch wordt uitgevoerd | de echte statuscodes en foutteksten van Anthropic, en het beleid voor opnieuw proberen van uw SDK. Uw app heeft ook een testswitch nodig om de mock te bereiken. |
| De echte API aanroepen totdat deze mislukt | Werkelijk gedrag | U kunt geen 529 op aanvraag activeren en u kunt helemaal niet veilig een uitgavenlimiet activeren |
| Het echte verkeer van uw app onderscheppen en 529's en 429's op aanvraag retourneren | Echte URL's, uw echte SDK en retrybeleid, en de eigen foutindeling van Anthropic | Er verandert niets in uw app, dus test het uw code niet geïsoleerd. Bewaar dat voor uw unittests. |
Probeer het in uw app
Dev Proxy onderschept de aanvragen van uw app naar https://api.anthropic.com en retourneert fouten in de foutindeling van Anthropic, terwijl uw app de echte URL blijft aanroepen. Download een voorinstelling en start de dev-proxy ermee:
devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
| Preset | Wat het teruggeeft |
|---|---|
anthropic-throttling |
Af en toe treedt 1 van de 4.429 rate_limit_error-reacties op (aanvragen, invoertokens, uitvoertokens en versnellingslimiet) of een 529 overloaded_error. Bij 429-fouten stelt Dev Proxy retry-after in en wordt aangegeven wanneer uw app de API te vroeg aanroept. |
anthropic-random-errors |
Willekeurig een van de fouten uit de lijst met Claude API-fouten, waaronder 400, 401, 402, 403, 404, 409, 413, 429, 500, 504 en 529, voor 50% van de aanvragen |
Geen van beide voorinstellingen omvat een bestedingslimiet 429. Als u dat pad wilt testen, voegt u een reactie zonder retry-after-koptekst toe aan het anthropic-errors.json-bestand van de voorinstelling:
{
"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" }
}
}
}
Als u wilt dat elke aanvraag mislukt, zodat u ziet wat er gebeurt wanneer de SDK geen nieuwe pogingen meer probeert, start u Dev Proxy met --failure-rate 100. Zie Foutpercentage van wijzigingsaanvraag voor meer informatie. Zie Dev Proxy instellen om Dev Proxy te installeren.