in azure-kusto-data/azure/kusto/data/client.py [0:0]
def compose_socket_options() -> List[Tuple[int, int, int]]:
# Sends TCP Keep-Alive after MAX_IDLE_SECONDS seconds of idleness, once every INTERVAL_SECONDS seconds, and closes the connection after MAX_FAILED_KEEPALIVES failed pings (e.g. 20 => 1:00:30)
MAX_IDLE_SECONDS = 30
INTERVAL_SECONDS = 180 # Corresponds to Azure Load Balancer Service 4 minute timeout, with 1 minute of slack
MAX_FAILED_KEEPALIVES = 20
if (
sys.platform == "linux"
and hasattr(socket, "SOL_SOCKET")
and hasattr(socket, "SO_KEEPALIVE")
and hasattr(socket, "TCP_KEEPIDLE")
and hasattr(socket, "TCP_KEEPINTVL")
and hasattr(socket, "TCP_KEEPCNT")
):
return [
(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, MAX_IDLE_SECONDS),
(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, INTERVAL_SECONDS),
(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, MAX_FAILED_KEEPALIVES),
]
elif (
sys.platform == "win32"
and hasattr(socket, "SOL_SOCKET")
and hasattr(socket, "SO_KEEPALIVE")
and hasattr(socket, "TCP_KEEPIDLE")
and hasattr(socket, "TCP_KEEPCNT")
):
return [
(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, MAX_IDLE_SECONDS),
(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, MAX_FAILED_KEEPALIVES),
]
elif sys.platform == "darwin" and hasattr(socket, "SOL_SOCKET") and hasattr(socket, "SO_KEEPALIVE") and hasattr(socket, "IPPROTO_TCP"):
TCP_KEEPALIVE = 0x10
return [(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1), (socket.IPPROTO_TCP, TCP_KEEPALIVE, INTERVAL_SECONDS)]
else:
return []