Beta/venv/lib/python3.12/site-packages/redis/_defaults.py
2026-06-16 17:09:34 +00:00

39 lines
1.2 KiB
Python

"""Internal default helper functions shared across redis-py modules."""
import socket
# Connection defaults
DEFAULT_SOCKET_TIMEOUT = 5 # 5s
DEFAULT_SOCKET_CONNECT_TIMEOUT = DEFAULT_SOCKET_TIMEOUT
DEFAULT_SOCKET_READ_SIZE = 32768 # 32KB
def get_default_socket_keepalive_options() -> dict[int, int]:
options = {}
# Linux exposes TCP_KEEPIDLE; macOS exposes the equivalent TCP_KEEPALIVE.
# Some platforms expose neither and only support SO_KEEPALIVE itself.
tcp_keepidle = getattr(socket, "TCP_KEEPIDLE", None)
if tcp_keepidle is None:
tcp_keepidle = getattr(socket, "TCP_KEEPALIVE", None)
if tcp_keepidle is not None:
options[tcp_keepidle] = 30
# Not every platform exposes interval/probe tuning constants.
tcp_keepintvl = getattr(socket, "TCP_KEEPINTVL", None)
if tcp_keepintvl is not None:
options[tcp_keepintvl] = 5
# Not every platform exposes interval/probe tuning constants.
tcp_keepcnt = getattr(socket, "TCP_KEEPCNT", None)
if tcp_keepcnt is not None:
options[tcp_keepcnt] = 3
return options
# Retry defaults
DEFAULT_RETRY_COUNT = 10
DEFAULT_RETRY_BASE = 0.01 # 10ms
DEFAULT_RETRY_CAP = 1 # 1s