Přehled

Omezení rychlosti řídí, kolik požadavků API lze provést v určitém časovém okně. To pomáhá chránit vaši infrastrukturu před zneužitím, zajišťuje spravedlivé používání mezi uživateli a udržuje výkon systému.

**Klíčové výhody**
- Zabránění zneužití API a nadměrnému používání
- Zajištění spravedlivého přidělování zdrojů mezi uživateli
- Udržování výkonu a stability systému
- Elegantní zpracování s automatickými opakováními

Hierarchie omezení rychlosti

Omezení rychlosti lze konfigurovat na různých úrovních, přičemž přednost mají konkrétnější omezení.

card: 1. Úroveň tenanta
icon: user
**Výchozí: 360/m**
Základní omezení rychlosti platí pro všechny požadavky v rámci tenanta. Toto je nejširší úroveň kontroly.
card: 2. Úroveň organizace
icon: building
**Výchozí: 120/m**
Omezení rychlosti platí pro požadavky v rámci konkrétní organizace. Uživatelé si to mohou nakonfigurovat tak, aby omezili spotřebu kvóty tenanta jejich organizací.
card: 3. Úroveň klíče API
icon: key
**Vlastní**
Nejkonkrétnější omezení rychlosti platí pro jednotlivé klíče API. To umožňuje jemnozrnnou kontrolu nad konkrétními integracemi nebo uživateli.
**Důležitá poznámka**
Omezení rychlosti klíče API umožňují uživatelům omezit své vlastní využití, aby se zabránilo spotřebování celé kvóty organizace nebo tenanta. Nastavení nižšího limitu pomáhá předcházet náhodné nadměrné spotřebě.

Formát omezení rychlosti

Omezení rychlosti jsou určena pomocí jednoduchého formátu: číslo/časová jednotka. Více limitů lze kombinovat pomocí čárek, aby se současně vynucovala různá časová okna.

Syntaxe

Jeden limit:

{number}/{timeunit}

Více limitů (všechny vynuceny):

{number}/{timeunit}, {number}/{timeunit}, ...
**Více omezení rychlosti**
Pokud je zadáno více limitů, VŠECHNY limity jsou vynuceny současně. Požadavek bude omezen, pokud bude překročen KTERÝKOLI z limitů.

Příklad: `32/s, 120/m, 1000/h, 10000/d`

Toto vynucuje: max. 32 za sekundu A max. 120 za minutu A max. 1000 za hodinu A max. 10000 za den

Časové jednotky

JednotkaPopis
sSekundy
mMinuty
hHodiny
dDny

Příklady

FormátPopis
120/m120 požadavků za minutu
1000/h1000 požadavků za hodinu
50/s50 požadavků za sekundu
5/s, 100/m5/sek A 100/min
10/s, 500/h, 5000/dVrstvené omezení rychlosti

Hlavičky omezení rychlosti

API vrací informace o omezení rychlosti prostřednictvím hlaviček HTTP v každé odpovědi.

HlavičkaPopisPříklad
X-RateLimit-LimitCelkový počet požadavků povolených v aktuálním časovém okně120
X-RateLimit-RemainingPočet požadavků zbývajících v aktuálním časovém okně75
X-RateLimit-UsedPočet požadavků, které již byly provedeny v aktuálním časovém okně45
X-RateLimit-ResetČasové razítko Unix, kdy se aktuální okno omezení rychlosti resetuje1693829400
X-RateLimit-PolicyAktuálně platná zásada omezení rychlosti120/m
Retry-AfterPočet sekund, které je třeba počkat před provedením dalšího požadavku (pouze v odpovědích 429)30

Zpracování odpovědi 429

Když jsou překročena omezení rychlosti, API vrátí stavový kód 429 s informacemi o opakování.

Příklad odpovědi 429

HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
X-RateLimit-Used: 120
X-RateLimit-Reset: 1693829400
X-RateLimit-Policy: 120/m
Retry-After: 30

{
  "error": "Rate limit exceeded (120/m). Please try again in 30 seconds."
}

Automatické zpomalení serveru

**Automatické zpomalení serveru**
Při přiblížení se k omezením rychlosti server automaticky spravuje tok požadavků:
- Pokud je čekací doba na omezení rychlosti kratší než 5 sekund, server zpozdí zpracování požadavku namísto odmítnutí
- To poskytuje plynulejší zážitek pro vzorové přenosy
- Požadavky jsou zpracovány úspěšně, ale s prodlouženou dobou odezvy

Automatické zpracování klientem

**Automatické zpracování klientem**
Naše klientské knihovny automaticky zpracovávají odpovědi 429:
- Automaticky opakují požadavky po zadaném zpoždění
- Respektují hlavičku Retry-After pro optimální načasování
- Implementují exponenciální zpětné odložení pro opakované selhání
- Zaznamenávají pokusy o opakování pro účely ladění

Doporučené postupy

Dělejte

  • Monitorujte hlavičky omezení rychlosti v odpovědích
  • Implementujte správnou logiku opakování s exponenciálním zpětným odložením
  • Nastavte konzervativní limity klíče API pro externí integrace
  • Ukládejte odpovědi API do mezipaměti, pokud je to možné, abyste snížili objem požadavků
  • Používejte dávkové operace ke snížení celkového počtu požadavků

Nedělejte

  • Ignorujte odpovědi 429 bez implementace opakování
  • Provádějte nadměrné paralelní požadavky
  • Nastavujte limity klíče API vyšší než limity organizace
  • Opakujte okamžitě bez respektování hlaviček Retry-After
  • Předpokládejte, že omezení rychlosti jsou stejná pro všechny koncové body