params = cls._get_connection_params(conninfo, **kwargs)
timeout = int(params["connect_timeout"])
rv = None
- for attempt in conninfo_attempts(params):
+ attempts = conninfo_attempts(params)
+ for attempt in attempts:
try:
conninfo = make_conninfo(**attempt)
rv = cls._wait_conn(cls._connect_gen(conninfo), timeout=timeout)
break
except e._NO_TRACEBACK as ex:
+ if len(attempts) > 1:
+ logger.debug(
+ "connection attempt failed on host: %r, port: %r,"
+ " hostaddr: %r: %s",
+ attempt.get("host"),
+ attempt.get("port"),
+ attempt.get("hostaddr"),
+ str(ex),
+ )
last_ex = ex
if not rv:
params = await cls._get_connection_params(conninfo, **kwargs)
timeout = int(params["connect_timeout"])
rv = None
- for attempt in await conninfo_attempts_async(params):
+ attempts = await conninfo_attempts_async(params)
+ for attempt in attempts:
try:
conninfo = make_conninfo(**attempt)
rv = await cls._wait_conn(cls._connect_gen(conninfo), timeout=timeout)
break
except e._NO_TRACEBACK as ex:
+ if len(attempts) > 1:
+ logger.debug(
+ "connection attempt failed on host: %r, port: %r,"
+ " hostaddr: %r: %s",
+ attempt.get("host"),
+ attempt.get("port"),
+ attempt.get("hostaddr"),
+ str(ex),
+ )
last_ex = ex
if not rv:
import re
import socket
import asyncio
+import logging
from typing import Any
from random import shuffle
from pathlib import Path
ConnDict: TypeAlias = "dict[str, Any]"
+logger = logging.getLogger("psycopg")
+
def make_conninfo(conninfo: str = "", **kwargs: Any) -> str:
"""
try:
attempts.extend(await _resolve_hostnames(attempt))
except OSError as ex:
+ logger.debug("failed to resolve host %r: %s", attempt.get("host"), str(ex))
last_exc = ex
if not attempts: