NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Google Places for Laravel

Limity požiadaviek (rate limiting)

Každé odchádzajúce volanie prechádza cez http-client-rate-limits-for-laravel, s vlastným limitom pre každé API pod kľúčom google-places:{surface}:{owner}. Požiadavky predvolene čakajú, kým sa okno uvoľní; so zapnutým adaptive (predvolene) sa limiter sám doladí podľa Retry-After z odpovede 429. Každé API má predvolene limit 600 požiadaviek za minútu.

API (surface)VolaniaKľúč hosta
placesautocomplete, details, textSearch, nearbySearch, findPlace, textSearchPaginated, nearbySearchPaginated, photoUri, photoContents (photo())hosts.places
routesdistance, computeMatrix, matrix()hosts.routes
geocodinggeocode, geocodeAddresshosts.geocoding

Každé API doladíte v config/google-places.php (pozrite Konfigurácia) alebo cez env:

GOOGLE_PLACES_GEOCODING_RATELIMIT=300
GOOGLE_PLACES_GEOCODING_RATELIMIT_PER=minute
GOOGLE_PLACES_ROUTES_RATELIMIT_ENABLED=false   # send this surface unthrottled
GOOGLE_PLACES_PLACES_RATELIMIT_MAX_WAIT=2000    # fail fast (ms) instead of pacing

rate_limits.owner je spoločný pre všetky API, takže viacero aplikácií zdieľajúcich jeden kľúč Google môže mať každá vlastný limit. photoUrl() (bez požiadavky) a check() sa nikdy neobmedzujú. Každý kľúč sa číta pod plným názvom, takže preklep v per alebo nezmyselný limit vyhodí InvalidConfigurationException s názvom kľúča, napríklad google-places.rate_limits.places.limit — nikdy sa potichu nepoužije okno minute.

Rýchle zlyhanie

Ak má API nastavené rýchle zlyhanie (max_wait) a čakanie by ho prekročilo, volanie vyhodí RateLimitExceededException — ide o PlacesException, takže existujúce bloky catch (PlacesException) fungujú ďalej — s vlastnosťou $e->surface a cez kontrakt HasRetryAfter z package toolkitu aj s $e->retryAfterSeconds():

use RoundlyConsulting\PackageToolkit\Contracts\HasRetryAfter;

try {
    GooglePlaces::textSearch('coffee');
} catch (PlacesException $e) {
    if ($e instanceof HasRetryAfter) {
        return response('Slow down', 429, ['Retry-After' => $e->retryAfterSeconds()]);
    }

    throw $e;
}
use RoundlyConsulting\GooglePlaces\Exceptions\RateLimitExceededException;

catch (RateLimitExceededException $e) {
    $e->surface;              // "places", "routes" or "geocoding"
    $e->retryAfterSeconds();  // seconds until the window frees up
    $e->getCode();            // 429
}

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 kryptomien

Odoslaní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.