Maximálne čakanie
Ak je pre vás lepšia chyba než dlhé blokovanie, nastavte strop čakania. Čakanie nad stropom — počítajú sa všetky jeho kolá, ak limiter po strate miesta v prospech iného workera čaká znova — vyhodí RateLimitExceededException (rozširuje RateLimitException) namiesto uspania:
Http::rateLimit(RateLimits::perHour(10)->maxWait(5_000)) // milliseconds
->get('https://api.example.com/report');Spracovanie výnimky
Výnimka nesie kľúč vlastníka, potrebné čakanie aj váš strop, takže môžete presne preplánovať, obmedziť funkciu alebo chybu nahlásiť:
use RoundlyConsulting\HttpClientRateLimits\Exceptions\RateLimitExceededException;
use RoundlyConsulting\HttpClientRateLimits\Facades\RateLimits;
try {
$response = Http::rateLimit(RateLimits::perHour(10)->maxWait(5_000))
->get('https://api.example.com/report');
} catch (RateLimitExceededException $e) {
$e->key; // the owner key of the window that forced the wait
$e->delayMs; // the wait that would have been needed
$e->maxWaitMs; // your ceiling (5000)
}Kontrola prebehne pred udalosťou RequestDeferred aj pred akýmkoľvek čakaním, takže pre odmietnuté volanie sa nič nezaznamená. V pomenovanom profile ju nastavíte kľúčom max_wait (v milisekundách).
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.