Limity czasu poszczególnych faz a całkowity termin żądania proxy
Oddziel limity poszczególnych faz od całkowitego budżetu czasu operacji przez proxy, wraz z ponowieniami i odczytem odpowiedzi.
Limity czasu połączenia i odczytu ograniczają określone oczekiwania. Nie muszą ograniczać całej operacji przez proxy, która może obejmować także oczekiwanie w kolejce, DNS, CONNECT, TLS, przekierowania, ponowienia i odczyt odpowiedzi.
| Limit | Zakres |
|---|---|
| Limit czasu połączenia | Nawiązanie połączenia według definicji klienta |
| Limit bezczynności odczytu | Oczekiwanie bez spodziewanego postępu danych |
| Termin całkowity | Dopuszczalny czas trwania całej operacji |
Zacznij od budżetu operacji
Używaj udokumentowanego całkowitego terminu klienta lub mechanizmu anulowania, gdy jest dostępny, razem z limitami faz. HTTPX rozdziela oczekiwania puli, połączenia, odczytu i zapisu. Requests stwierdza, że jego limit nie jest ograniczeniem pełnego pobierania. curl udostępnia limit całkowitego transferu.
Na przykład zadanie dwudziestosekundowe spędza dwie sekundy w kolejce, trzy na budowę trasy i sześć na nieudanej wymianie. Jego następna próba ma około dziewięciu sekund. Danie każdej ponownej próbie świeżych dwudziestu sekund odrzuciłoby pierwotny budżet.
Do rozliczania upływu czasu używaj zegara monotonicznego. Przenoś termin bezwzględny lub pozostały czas przez warstwy, które posiadają pracę. Jeśli otaczający mechanizm anulowania nie potrafi wymusić wymaganego zakresu, wyraźnie to zaznacz.
Uwzględnij treść i sprzątanie
Metoda zwracająca po nagłówkach może pozostawić odczyt treści poza swoim terminem. Zdecyduj, czy budżet obejmuje nawiązanie, pełne skończone pobieranie czy długotrwały strumień z osobnymi regułami żywotności. Nowoczesny przykład .NET anulowania nagłówków i treści przenosi jeden token przez oba etapy.
Zostaw czas na zamknięcie odpowiedzi i dokończenie anulowania, zanim następna próba zajmie pojemność puli. Zapisuj nieudaną fazę i upływ czasu; powtarzane odczyty robiące postęp mogą spełniać limity bezczynności, podczas gdy całe zadanie trwa zbyt długo.
Termin bramy wobec źródła należy do tej bramy. Gdy zwróci 504, niewykorzystany budżet klienta nie może przedłużyć zakończonej próby. Trzymaj każdy timer przypisany do jego właściciela, decydując, które ustawienie wymaga poprawki.