@@ -121,7 +121,7 @@ def _parse_retry_after_header(
121121 See also
122122 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After#syntax
123123 """
124- if response_headers is None :
124+ if not response_headers :
125125 return None
126126
127127 # First, try the non-standard `retry-after-ms` header for milliseconds,
@@ -485,6 +485,8 @@ def request_raw(
485485 _thread_context .session .close ()
486486 _thread_context .session = _make_session (MAX_CONNECTION_RETRIES )
487487 _thread_context .session_create_time = time .time ()
488+
489+ result = None
488490 try :
489491 result = _thread_context .session .request (
490492 options .method ,
@@ -500,11 +502,13 @@ def request_raw(
500502 except requests .exceptions .Timeout as e :
501503 utils .log_debug ("Encountered requests.exceptions.Timeout" )
502504
505+ result_headers = dict (result .headers ) if result is not None else {}
506+
503507 if remaining_retries > 0 :
504508 return self ._retry_request (
505509 options ,
506510 remaining_retries = remaining_retries ,
507- response_headers = dict ( result . headers ) ,
511+ response_headers = result_headers ,
508512 stream = stream ,
509513 request_timeout = request_timeout ,
510514 )
@@ -513,11 +517,13 @@ def request_raw(
513517 except requests .exceptions .RequestException as e :
514518 utils .log_debug ("Encountered requests.exceptions.RequestException" )
515519
520+ result_headers = dict (result .headers ) if result is not None else {}
521+
516522 if remaining_retries > 0 :
517523 return self ._retry_request (
518524 options ,
519525 remaining_retries = remaining_retries ,
520- response_headers = dict ( result . headers ) ,
526+ response_headers = result_headers ,
521527 stream = stream ,
522528 request_timeout = request_timeout ,
523529 )
@@ -527,26 +533,32 @@ def request_raw(
527533 ) from e
528534
529535 # retry on 5XX error or rate-limit
530- if 500 <= result .status_code < 600 or result .status_code == 429 :
531- utils .log_debug (
532- f"Encountered requests.exceptions.HTTPError. Error code: { result .status_code } "
533- )
534-
535- if remaining_retries > 0 :
536- return self ._retry_request (
537- options ,
538- remaining_retries = remaining_retries ,
539- response_headers = dict (result .headers ),
540- stream = stream ,
541- request_timeout = request_timeout ,
536+ if result is not None :
537+ if 500 <= result .status_code < 600 or result .status_code == 429 :
538+ utils .log_debug (
539+ f"Encountered requests.exceptions.HTTPError. Error code: { result .status_code } "
542540 )
543541
542+ result_headers = dict (result .headers ) if result is not None else {}
543+
544+ if remaining_retries > 0 :
545+ return self ._retry_request (
546+ options ,
547+ remaining_retries = remaining_retries ,
548+ response_headers = result_headers ,
549+ stream = stream ,
550+ request_timeout = request_timeout ,
551+ )
552+
553+ status_code = result .status_code if result is not None else 0
554+ result_headers = dict (result .headers ) if result is not None else {}
555+
544556 utils .log_debug (
545557 "Together API response" ,
546558 path = abs_url ,
547- response_code = result . status_code ,
548- processing_ms = result . headers .get ("x-total-time" ),
549- request_id = result . headers .get ("CF-RAY" ),
559+ response_code = status_code ,
560+ processing_ms = result_headers .get ("x-total-time" ),
561+ request_id = result_headers .get ("CF-RAY" ),
550562 )
551563
552564 return result # type: ignore
0 commit comments