Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dławienie żądań API jest typowym wyzwaniem podczas tworzenia aplikacji opartych na interfejsach API w chmurze. Poniżej przedstawiono techniki, których można użyć, aby sobie z tym poradzić:
- Użyj ograniczania szybkości. Jeśli używany interfejs API obsługuje ograniczanie szybkości, użyj informacji o ograniczaniu szybkości wysyłanych przez interfejs API, aby upewnić się, że aplikacja nie przekracza limitów interfejsu API.
- Obsługa nagłówków Retry-After. Niektóre interfejsy API wysyłają nagłówek
Retry-Afterw odpowiedzi, gdy żądanie jest ograniczone szybkościowo. Jeśli Twoje żądania zostaną ograniczone, a odpowiedź ma nagłówekRetry-After, zaczekaj określony czas, zanim wyślesz kolejne żądanie. - Zaimplementuj wycofywanie wykładnicze. Jeśli używany interfejs API nie wysyła nagłówka
Retry-After, zaimplementuj algorytm wykładniczego wycofywania z losowym jitterem. Po każdym żądaniu, które zakończyło się niepowodzeniem, odczekaj dwukrotnie dłużej, zanim spróbujesz ponownie, i zatrzymaj się po kilku próbach. Oczekiwanie dłużej pomaga zmniejszyć obciążenie interfejsu API i zwiększa prawdopodobieństwo pomyślnego zakończenia kolejnych żądań. - Dowiedz się, kiedy nie należy ponowić próby. Niektóre błędy typu throttling oznaczają, że wyczerpał się limit przydziału lub kredyty, na przykład OpenAI
credit_balance_exhausted. Ponawianie ich nie pomoże, więc zatrzymaj się i poinformuj użytkownika. - Buforuj wcześniej odebrane dane. Buforuj odpowiedzi z interfejsu API, szczególnie w przypadku żądań, które prawdopodobnie będą zwracać te same dane. Buforowanie pomaga zmniejszyć liczbę wywołań do interfejsu API i pozostać w granicach limitu szybkości.
- Kolejkuj żądania. Zaimplementuj kolejkę dla wychodzących żądań interfejsu API w celu zarządzania szybkością żądań i upewnij się, że limity szybkości interfejsu API nie zostały przekroczone.
- Optymalizowanie wywołań interfejsu API. Pobierz tylko potrzebne dane i użyj żądań wsadowych, jeśli interfejs API je obsługuje. Optymalizacja pomaga zmniejszyć liczbę żądań i pozostać w granicach limitów liczby żądań.
- Pokaż użytkownikowi, co się dzieje. „Zajęty, ponawianie próby w ciągu 5 sekund” jest lepsze niż wskaźnik ładowania, który nigdy się nie kończy.
Po zaimplementowaniu tych technik w aplikacji przetestuj, czy obsługuje ona prawidłowo dławienie. Logika ponawiania, której działania nigdy nie widziałeś, to logika ponawiania prób, co do której nie wiesz, czy działa. Aby zapoznać się z porównaniem sposobów jego testowania, zobacz Jak przetestować, czy aplikacja obsługuje ograniczanie przepustowości.
Wypróbuj ją w swojej aplikacji
Dev Proxy zwraca odpowiedzi o ograniczaniu przepustowości dla wybranych interfejsów API, podczas gdy aplikacja nadal wywołuje rzeczywiste adresy URL i informuje, kiedy aplikacja ponawia próbę, zanim upłynie czas Retry-After. Ustawienia wstępne są dostępne dla punktów końcowych GitHub (github-rate-limiting), OpenAI (openai-throttling), Anthropic (anthropic-throttling) i Microsoft Graph OneDrive i SharePoint (microsoft-graph-rate-limiting):
devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
Aby zainstalować Dev Proxy, zobacz Konfigurowanie Dev Proxy.