Skip to content

Commit b34d7c1

Browse files
committed
update http.py coverage
1 parent c36843c commit b34d7c1

File tree

2 files changed

+312
-127
lines changed

2 files changed

+312
-127
lines changed

src/inference_endpoint/endpoint_client/http.py

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ class HttpRequestTemplate:
663663
static_prefix: Pre-merged request line + host header bytes
664664
"""
665665

666-
__slots__ = ("static_prefix", "_extra_headers_cache", "extra_cached_headers")
666+
__slots__ = ("static_prefix", "cached_headers")
667667

668668
# Pre-encoded general headers
669669
HEADERS_STREAMING = (
@@ -675,8 +675,7 @@ class HttpRequestTemplate:
675675

676676
def __init__(self, static_prefix: bytes):
677677
self.static_prefix = static_prefix
678-
self._extra_headers_cache: dict[frozenset, bytes] = {}
679-
self.extra_cached_headers = b""
678+
self.cached_headers = b""
680679

681680
@classmethod
682681
def from_url(cls, host: str, port: int, path: str = "/") -> HttpRequestTemplate:
@@ -706,20 +705,14 @@ def from_url(cls, host: str, port: int, path: str = "/") -> HttpRequestTemplate:
706705

707706
def cache_headers(self, headers: dict[str, str]) -> None:
708707
"""
709-
Pre-cache extra headers to avoid first-call encoding overhead.
710-
711-
Call this during setup to prime the cache for headers that will be
712-
used repeatedly at runtime.
708+
Pre-encode extra headers during setup to avoid encoding in the hotpath.
713709
714710
Args:
715711
headers: Headers to pre-encode and cache
716712
"""
717-
cache_key = frozenset(headers.items())
718-
if cache_key not in self._extra_headers_cache:
719-
self._extra_headers_cache[cache_key] = "".join(
720-
f"{k}: {v}\r\n" for k, v in headers.items()
721-
).encode("utf-8", "surrogateescape")
722-
self.extra_cached_headers = b"".join(self._extra_headers_cache.values())
713+
self.cached_headers += "".join(
714+
f"{k}: {v}\r\n" for k, v in headers.items()
715+
).encode("utf-8", "surrogateescape")
723716

724717
def build_request(
725718
self,
@@ -748,25 +741,22 @@ def build_request(
748741
return b"".join(
749742
[
750743
self.static_prefix,
751-
self.extra_cached_headers,
744+
self.cached_headers,
752745
content_type_headers,
753746
content_length,
754747
body,
755748
]
756749
)
757750

758-
# Slow path: extra headers (~1us uncached, ~50ns per extra-header cached)
759-
cache_key = frozenset(extra_headers.items())
760-
if (extra := self._extra_headers_cache.get(cache_key)) is None:
761-
extra = "".join(f"{k}: {v}\r\n" for k, v in extra_headers.items()).encode(
762-
"utf-8", "surrogateescape"
763-
)
764-
self._extra_headers_cache[cache_key] = extra
765-
751+
# Slow path: extra headers are encoded per-call;
752+
# use cache_headers() at setup time for headers that repeat every request.
753+
extra = "".join(f"{k}: {v}\r\n" for k, v in extra_headers.items()).encode(
754+
"utf-8", "surrogateescape"
755+
)
766756
return b"".join(
767757
[
768758
self.static_prefix,
769-
self.extra_cached_headers,
759+
self.cached_headers,
770760
content_type_headers,
771761
extra,
772762
content_length,

0 commit comments

Comments
 (0)