Najważniejsze zmiany
Odpowiedzi o przekroczeniu limitu zwracają teraz HTTP 429 z nagłówkiem Retry-After, zgodnie z tym, co wysyłają OpenAI, GitHub i Cloudflare. Na stronie z cenami dodano wiersz z przepustowością (każdy plan publiczny ma status Unlimited). Żądania o exitCountries w planie bez kierowania geograficznego otrzymują teraz czyste 403 z podaniem parametru i rozwiązania.
Co nowego
Limity wykorzystania to teraz HTTP 429, nie 402
Jeśli osiągniesz limit planu (kredyty lub przepustowość), odpowiedzią jest 429 Too Many Requests z Retry-After w każdej odpowiedzi i resets_at w treści JSON wskazującym na koniec okresu rozliczeniowego. Pole reason informuje, jaki limit został przekroczony (plan_limit_credits lub plan_limit_bandwidth), dzięki czemu nie koliduje z limitami częstotliwości na minutę.
Dlaczego ta zmiana? 402 brzmi poprawnie ("Wymagana płatność"), ale w praktyce w ten sposób Stripe zgłasza nieudane obciążenia, a wiele klientów HTTP i proxy błędnie je obsługuje. OpenAI, GitHub, Twilio i Cloudflare odrzucają przekroczone limity za pomocą 429 i wyraźnego kodu błędu. Podążanie za stadem to w tym przypadku słuszny krok: każda biblioteka ponawiania żądań na świecie wie już, co zrobić z naszymi odpowiedziami.
Wartość Retry-After jest ograniczona do 24 godzin dla entuzjastów uśpienia i ponowienia. Jeśli chcesz poznać rzeczywisty czas resetu, odczytaj resets_at z treści JSON.
Przepustowość na stronie z cenami: Unlimited
Na stronie /prices dodano wiersz Bandwidth w macierzy porównawczej. Każdy plan publiczny oferuje nieograniczoną przepustowość, a macierz teraz o tym wyraźnie mówi. To taka rzecz, której nie potrzebujesz, dopóki klient o to nie zapyta, a Ty nie możesz znaleźć tej liczby. Teraz jest na stronie.
Niestandardowe plany z ograniczeniem przepustowości pokazują swoją wartość w GB w tym samym rzędzie.
Kierowanie geograficzne zgłasza teraz właściwy błąd
Jeśli żądanie wysyła exitCountries, podczas gdy plan nie obejmuje funkcji kierowania geograficznego, odpowiedź to 403 z komunikatem określającym parametr i sposób rozwiązania problemu. Wcześniej żądanie przechodziło tak, jakby kierowanie geograficzne było dozwolone. Teraz od razu się nie powodzi.
Żądania bez exitCountries pozostają nietknięte. Działa to tylko wtedy, gdy faktycznie o tę funkcję poprosisz.
Drobne poprawki Panelu w sekcjach Limity i Płatności
Trzy poprawki ułatwiające życie:
- Karta Limits. Zapisana podkarta (Overview / API keys / Limits & Features) przywraca się przed wygenerowaniem widoku, dzięki czemu przy odświeżaniu nie widać już błysku nieprawidłowej karty.
- API Keys. Pole wyszukiwania wykorzystuje kanoniczny wzorzec wyszukiwania zamiast samego pola input.
- Płatności. Wiersze meta pod Metodą płatności renderują się teraz z odpowiednim stylem (wcześniej pozostawały bez stylów).
Pod maską
Tryby egzekwowania limitów planu można teraz przełączać na żywo. Każdy z sześciu limitów w płaszczyźnie danych (współbieżność na produkt, współczynnik na minutę, przeglądarka na dzień, kredyty, przepustowość, funkcje) plus kontrola tworzenia kluczy w płaszczyźnie zarządzania można przełączać pomiędzy off, signal i enforce z poziomu panelu ustawień, którym zarządza nasz zespół. Bez ponownego wdrażania. Proces w tle odpytuje ustawienie co 60 sekund, a główna ścieżka pozostaje synchroniczna.
Dlaczego to jest ważne? Gdy limit sprawia problemy na produkcji, możemy go wycofać w minutę zamiast wdrażać nowy kod. Pozwala nam to również na stopniowe egzekwowanie, dla każdego limitu osobno, obserwując zachowanie rzeczywistego ruchu na każdym etapie. Tryb sygnalizowania rejestruje zdarzenie bez blokowania; tryb egzekwowania włącza odpowiedź 429 lub 403. Chcieliśmy, aby ten krok pośredni był pełnoprawnym rozwiązaniem, a nie tylko awaryjnym przełącznikiem.
Liczby
Retry-Afterlimit dla odrzuceń quota: 24 godziny (rzeczywisty czas resetowania wresets_at)- Interwał odpytywania ustawień runtime: 60 sekund
- Publiczne plany bez limitu przepustowości: wszystkie
Limiter planów był naszym głównym tematem przez ostatni miesiąc. Następny krok: egzekwowanie pierwszych limitów (kredyty i współbieżność na produkt wydają się naturalną pierwszą parą) oraz ostrzeżenia e-mail, gdy tylko wdrożona zostanie faza wysyłania wiadomości.