HelpImport and export

Rate limiting API

Jak DATIFY omezuje počet požadavků na API, co znamenají hlavičky RateLimit a jak správně reagovat na odpověď 429.

Aby jeden klient nevytížil API na úkor ostatních, je počet požadavků omezený. Limit se počítá pro každého uživatele zvlášť – a protože token jedná jako vy, sčítají se do něj požadavky ze všech vašich tokenů dohromady. Jak token získat, popisuje článek API – přístup k datům.

Jak zjistíte, kolik vám zbývá

Kolik požadavků máte k dispozici, si nemusíte nikam psát – DATIFY to posílá v každé odpovědi. Vracejí se dvě hlavičky podle standardu IETF:

Hlavičky v každé odpovědi
HlavičkaCo říká
RateLimit-PolicyPravidlo, které na vás platí: q = kolik požadavků, w = za kolik sekund.
RateLimitVáš aktuální stav: r = kolik požadavků zbývá, t = za kolik sekund se limit obnoví.

Vypadá to takhle:

RateLimit-Policy: "user";q=1000;w=1;pk=:hvB8…=:
RateLimit: "user";r=997;t=1;pk=:hvB8…=:

Na začátku je název pravidla, pk je pak klíč, podle kterého se limit počítá – u vás vždycky vaše identita. Hlavičky odpovídají standardu IETF, takže si s nimi poradí i hotové knihovny.

Konkrétní čísla si čtěte z hlavičky, ne z dokumentace – limit se může lišit podle prostředí a časem se změní. Klient, který se řídí hlavičkou, bude fungovat i potom.

Když limit vyčerpáte

Požadavek nad limit se neprovede a API odpoví:

  • stavovým kódem 429 Too Many Requests,
  • hlavičkou Retry-After s počtem sekund, po které má klient počkat,
  • hlavičkou RateLimit s r=0,
  • textem Too Many Requests. Retry in Ns.

Řiďte se hodnotou v Retry-After. Počkejte uvedený počet sekund a teprve pak požadavek zopakujte; okamžité opakování jen limit vyčerpává dál. Dobrý klient si navíc pohlídá hodnotu r v hlavičce RateLimit a zpomalí dřív, než na nulu dojede.

Jak se limitu vyhnout

Nejúčinnější je posílat míň požadavků, ne je posílat pomaleji:

  • Zapisujte hromadně. Endpoint pro vytváření záznamů přijme až 1000 záznamů v jednom požadavku – místo tisíce volání tak stačí jedno. Při překročení API odpoví chybou Maximum of 1000 records can be created in a single bulk request.
  • Čtěte hromadně. Na výběr záznamů použijte dotaz s filtrem místo toho, abyste si je tahali po jednom.
  • Nesahejte na API v cyklu bez prodlevy. Když synchronizujete větší objem, rozložte běh v čase.

Jednorázový přesun většího objemu dat bývá jednodušší importem CSV – popisuje ho článek Import CSV.

Související články

On this page