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
| Jednotka | Popis |
|---|---|
s | Sekundy |
m | Minuty |
h | Hodiny |
d | Dny |
Příklady
| Formát | Popis |
|---|---|
120/m | 120 požadavků za minutu |
1000/h | 1000 požadavků za hodinu |
50/s | 50 požadavků za sekundu |
5/s, 100/m | 5/sek A 100/min |
10/s, 500/h, 5000/d | Vrstvené omezení rychlosti |
Hlavičky omezení rychlosti
API vrací informace o omezení rychlosti prostřednictvím hlaviček HTTP v každé odpovědi.
| Hlavička | Popis | Příklad |
|---|---|---|
X-RateLimit-Limit | Celkový počet požadavků povolených v aktuálním časovém okně | 120 |
X-RateLimit-Remaining | Počet požadavků zbývajících v aktuálním časovém okně | 75 |
X-RateLimit-Used | Poč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 resetuje | 1693829400 |
X-RateLimit-Policy | Aktuálně platná zásada omezení rychlosti | 120/m |
Retry-After | Poč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