diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index dff1c515b7..96a3d2e6e4 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -389,6 +389,12 @@ try: except ValueError: REDIS_SOCKET_CONNECT_TIMEOUT = None +REDIS_SOCKET_TIMEOUT = os.getenv('REDIS_SOCKET_TIMEOUT', '') +try: + REDIS_SOCKET_TIMEOUT = float(REDIS_SOCKET_TIMEOUT) +except ValueError: + REDIS_SOCKET_TIMEOUT = None + # Whether to enable TCP SO_KEEPALIVE on Redis client sockets. Opt-in: # defaults to off so behavior is unchanged for existing deployments. When # enabled, the kernel sends TCP keepalive probes on idle connections so diff --git a/backend/open_webui/utils/redis.py b/backend/open_webui/utils/redis.py index 4fbc4ba12d..90d81abb26 100644 --- a/backend/open_webui/utils/redis.py +++ b/backend/open_webui/utils/redis.py @@ -23,6 +23,7 @@ from open_webui.env import ( REDIS_SENTINEL_PORT, REDIS_SOCKET_CONNECT_TIMEOUT, REDIS_SOCKET_KEEPALIVE, + REDIS_SOCKET_TIMEOUT, REDIS_URL, ) @@ -257,6 +258,8 @@ def _socket_options() -> dict[str, Any]: opts: dict[str, Any] = {} if REDIS_SOCKET_CONNECT_TIMEOUT is not None: opts['socket_connect_timeout'] = REDIS_SOCKET_CONNECT_TIMEOUT + if REDIS_SOCKET_TIMEOUT: + opts['socket_timeout'] = REDIS_SOCKET_TIMEOUT if REDIS_SOCKET_KEEPALIVE: opts['socket_keepalive'] = True if REDIS_HEALTH_CHECK_INTERVAL: