Všetky výnimky sú v RoundlyConsulting\HttpClientRateLimits\Exceptions a rozširujú RateLimitException:
| Výnimka | Kedy nastane |
|---|---|
RateLimitException | Základná trieda (rozširuje RuntimeException) — zachytíte ňou každú chybu balíka. |
RateLimitExceededException | Vypočítané čakanie prekročí strop maxWait() (pri zloženom limite najprísnejší zo všetkých okien). Obsahuje key, delayMs a maxWaitMs. |
JobReleasedException | ReleaseDeferrer vrátil úlohu do fronty. Obsahuje delaySeconds, key a job; job middleware HandlesRateLimitRelease pokus čisto ukončí. |
InvalidLimitException | Limit povoľuje menej ako jednu požiadavku za okno (rate alebo maxAttempts pod 1). |
UnknownLimiterProfileException | Profil s daným menom nie je definovaný v limiters. |
InvalidStoreException | Nakonfigurované úložisko neimplementuje kontrakt Store. |
InvalidDeferrerException | Nakonfigurovaný deferrer neimplementuje Deferrer alebo releasingJob() / ReleaseDeferrer dostal úlohu bez metódy release(). |
InvalidTimespanException | Reťazec okna — aj per v profile — nie je second, minute, hour ani day. |
UndefinedMethodException | Metóda volaná na RateLimit neexistuje ani na Limit, ani na Limiter. |
Zachytenie všetkých
use RoundlyConsulting\HttpClientRateLimits\Exceptions\RateLimitException;
try {
Http::rateLimit('github')->get('https://api.github.com/user');
} catch (RateLimitException $e) {
// Any package error: unknown profile, max wait exceeded, invalid store/deferrer, …
report($e);
}V úlohe vo fronte s ReleaseDeferrer zachytí všeobecný catch aj JobReleasedException — čo nevadí, úloha už bola vrátená do fronty.
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.