@@ -367,11 +367,7 @@ def __init__(
367367 async def __aenter__ (self ) -> "NavienAuthClient" :
368368 """Async context manager entry."""
369369 if self ._owned_session :
370- resolver = aiohttp .ThreadedResolver ()
371- connector = aiohttp .TCPConnector (resolver = resolver )
372- self ._session = aiohttp .ClientSession (
373- connector = connector , timeout = self .timeout
374- )
370+ self ._session = self ._create_session ()
375371
376372 # Check if we have valid stored tokens
377373 if self ._auth_response and self ._auth_response .tokens :
@@ -398,14 +394,24 @@ async def __aexit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
398394 if self ._owned_session and self ._session :
399395 await self ._session .close ()
400396
397+ def _create_session (self ) -> aiohttp .ClientSession :
398+ """Create an aiohttp ClientSession with ThreadedResolver.
399+
400+ ThreadedResolver uses Python's built-in socket module for DNS
401+ resolution, avoiding dependency on c-ares which can fail in
402+ containerized environments.
403+
404+ Returns:
405+ aiohttp.ClientSession configured with ThreadedResolver
406+ """
407+ resolver = aiohttp .ThreadedResolver ()
408+ connector = aiohttp .TCPConnector (resolver = resolver )
409+ return aiohttp .ClientSession (connector = connector , timeout = self .timeout )
410+
401411 async def _ensure_session (self ) -> None :
402412 """Ensure we have an active session."""
403413 if self ._session is None :
404- resolver = aiohttp .ThreadedResolver ()
405- connector = aiohttp .TCPConnector (resolver = resolver )
406- self ._session = aiohttp .ClientSession (
407- connector = connector , timeout = self .timeout
408- )
414+ self ._session = self ._create_session ()
409415 self ._owned_session = True
410416
411417 async def sign_in (
@@ -748,6 +754,7 @@ async def refresh_access_token(refresh_token: str) -> AuthTokens:
748754 url = f"{ API_BASE_URL } { REFRESH_ENDPOINT } "
749755 payload = {"refreshToken" : refresh_token }
750756
757+ # Use ThreadedResolver for reliable DNS in containerized environments
751758 resolver = aiohttp .ThreadedResolver ()
752759 connector = aiohttp .TCPConnector (resolver = resolver )
753760 async with (
0 commit comments