Skip to content

Commit e00d891

Browse files
authored
bug fix: handle result undefined in APIRequestor.request_raw() (#158)
* bug fix: handle result undefined in APIRequestor.request_raw() * fix format
1 parent 3c5f57e commit e00d891

File tree

1 file changed

+30
-18
lines changed

1 file changed

+30
-18
lines changed

src/together/abstract/api_requestor.py

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)