Een drukke sender kan zijn verzoekbudget opmaken voordat al zijn berichten in de wachtrij staan. Door het resterende quotum te lezen kan hij vertragen voordat meer calls worden geweigerd.
Hoe bepaalt Bird mijn limiet?
Bird past een basistarief toe, eventueel verhoogd door het abonnement, en vervolgens een eventuele override voor de betreffende groep. Een override vervangt de andere waarden.
Gerelateerde endpoints delen een groep. Het uitputten van een verzendgroep put niet automatisch de aparte groepen uit die worden gebruikt om statussen te lezen of webhooks te beheren.
Het bereik van elk budget hangt af van de operatie:
| Groep | Wie deelt het budget? |
|---|---|
| Productverzendingen | Alle credentials in de organisatie voor dat product. |
| Beheer: lezen, lijsten en schrijven | Verzoeken van dezelfde actieve credential binnen de organisatie. |
| Ongeauthenticeerde login of wachtwoordreset | Verzoeken van hetzelfde client-IP. |
Ongeauthenticeerde limieten gebruiken vaste drempelwaarden. Zie de gids over rate limits voor de groepen die aan individuele endpoints zijn toegewezen.
Verzendlimieten tellen verzoeken, niet ontvangers. Een batchverzoek kan meerdere berichten in de wachtrij plaatsen. De groep ervan kan een ander quotum hebben.
Vergelijk de actuele quota en het aantal ontvangers dat je kunt groeperen voordat je van endpoint wisselt. Een batch met één ontvanger levert mogelijk geen doorvoerwinst op.
Hoe lees ik de response-headers?
Lees RateLimit-Policy voor het quotum en het venster, en vervolgens RateLimit voor de resterende verzoeken en de tijd tot reset.
Bijvoorbeeld:
RateLimit-Policy: "email_send";q=1000;w=60
RateLimit: "email_send";r=842;t=35
Dit voorbeeld staat 1.000 verzoeken per venster van 60 seconden toe. Er zijn 842 verzoeken over, met 35 seconden tot reset.
De getallen illustreren de headers. Ze zijn geen gegarandeerd quotum. Lees de waarden die aan je client worden teruggegeven.
| Veld | Betekenis |
|---|---|
| Quoted name | De groep waarop het beleid van toepassing is. |
q | Toegestane verzoeken per venster. |
w | Vensterlengte in seconden. |
r | Resterende verzoeken. |
t | Seconden tot reset, geen timestamp. |
Een response kan meer dan één beleid bevatten. Houd rekening met elk van toepassing zijnd beleid bij het plannen van het volgende verzoek.
Wat geeft een rate-limit-fout terug?
Een uitgeputte API-limiet retourneert 429 Too Many Requests met Retry-After in seconden. De rate-limit-headers identificeren de uitgeputte groep. Het resterende quotum is r=0.
Het foutantwoord bevat deze velden:
{
"error": {
"type": "rate_limit_error",
"code": "E01003",
"name": "RateLimited"
}
}
Match het type of de code in je handler. Het leesbare bericht kan veranderen zonder dat de herstelactie wijzigt.
Hoe moet mijn client een 429 afhandelen?
Wacht op Retry-After en probeer het dan opnieuw met een begrensde backoff-strategie. Gebruik dezelfde idempotency-key bij het herhalen van dezelfde write.
Coördineer workers die hetzelfde groepsbudget gebruiken. De laatste response van een worker kan geen rekening houden met verzoeken die andere workers sindsdien hebben ingediend.
Vertraag naarmate het resterende quotum daalt. Behoud het retry-pad voor gelijktijdig verkeer. Spreiden vermindert fouten, maar kan niet garanderen dat geen enkele call een 429 ontvangt.
Bird SDK's handelen 429-retries en Retry-After af. Ze coördineren geen gedeelde wachtrij over al je processen.
Als het quotum te laag blijft voor de workload, neem dan contact op met Bird over een override. Meer keys aanmaken verhoogt een organisatiebrede verzendlimiet niet.
Heeft een rate-limited verzoek al werk verricht?
Bird wijst een rate-limited verzoek af voordat het gevraagde werk wordt uitgevoerd. Die afwijzing verbruikt de idempotency-key niet. Probeer het opnieuw met dezelfde key na het wachten.
De limiter laat verzoeken door als hij de limiet niet kan evalueren. Een probleem bij het evalueren van quota levert dus niet zelf een 429 op.
Bewaar idempotency-afhandeling ook voor andere fouten. Een serverfout of verloren response kan optreden nadat een write is begonnen.
Kort gezegd
Lees het quotum uit de responses.
De geldende limiet hangt af van de groep, het abonnement en een eventuele override. Een vast getal kan achterhaald raken.
Coördineer senders die een quotum delen.
Verzendlimieten gelden voor een hele organisatie, dus aparte keys creëren geen aparte verzendbudgetten.
Wacht voordat je een 429 opnieuw probeert.
Retry-Aftergeeft de vertraging in seconden. Begrens je retries. Bewaar de idempotency-key voor dezelfde write.Behandel headers als gedeelde state.
Resterende verzoeken kunnen door andere workers worden verbruikt, dus spreiden vermindert rate-limit-fouten maar voorkomt ze niet volledig.