aidial_interceptors_sdk/utils/_http_client.py (15 lines of code) (raw):

import functools from typing import Awaitable, Callable import httpx # connect timeout and total timeout DEFAULT_TIMEOUT = httpx.Timeout(600, connect=10) # Borrowed from openai._constants.DEFAULT_CONNECTION_LIMITS DEFAULT_CONNECTION_LIMITS = httpx.Limits( max_connections=1000, max_keepalive_connections=100 ) HTTPClientFactory = Callable[[], Awaitable[httpx.AsyncClient]] @functools.cache def get_http_client() -> httpx.AsyncClient: return httpx.AsyncClient( timeout=DEFAULT_TIMEOUT, limits=DEFAULT_CONNECTION_LIMITS, follow_redirects=True, )