Skip to content

Unable to connect to redis sentinel. Getting: unexpected keyword argument 'connection_pool' #3595

Open
@Manhar0911

Description

@Manhar0911

I am using python client to connect with sentinel master. But getting this error

Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/ecprt/agents/cli/cli.py", line 266, in _worker_run await worker.run() File "/usr/local/lib/python3.12/site-packages/ecprt/agents/worker.py", line 550, in run self.connect_to_redis() File "/usr/local/lib/python3.12/site-packages/ecprt/agents/worker.py", line 476, in connect_to_redis redis_client.ping() File "/usr/local/lib/python3.12/site-packages/redis/commands/core.py", line 1212, in ping return self.execute_command("PING", **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/redis/client.py", line 559, in execute_command return self._execute_command(*args, **options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/redis/client.py", line 565, in _execute_command conn = self.connection or pool.get_connection(command_name, **options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/redis/connection.py", line 1417, in get_connection connection = self.make_connection() ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/redis/connection.py", line 1463, in make_connection return self.connection_class(**self.connection_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/redis/connection.py", line 1013, in __init__ super().__init__(**kwargs) File "/usr/local/lib/python3.12/site-packages/redis/connection.py", line 684, in __init__ super().__init__(**kwargs) TypeError: AbstractConnection.__init__() got an unexpected keyword argument 'connection_pool' {"message": "worker failed", "level": "ERROR", "name": "livekit.agents", "exc_info": "Traceback (most recent call last):\n File \"/usr/local/lib/python3.12/site-packages/redis/connection.py\", line 1415, in get_connection\n connection = self._available_connections.pop()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nIndexError: pop from empty list\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/local/lib/python3.12/site-packages/myapp/cli/cli.py\", line 266, in _worker_run\n await worker.run()\n File \"/usr/local/lib/python3.12/site-packages/myapp/worker.py\", line 550, in run\n self.connect_to_redis()\n File \"/usr/local/lib/python3.12/site-packages/myapp/worker.py\", line 476, in connect_to_redis\n redis_client.ping()\n File \"/usr/local/lib/python3.12/site-packages/redis/commands/core.py\", line 1212, in ping\n return self.execute_command(\"PING\", **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/site-packages/redis/client.py\", line 559, in execute_command\n return self._execute_command(*args, **options)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/site-packages/redis/client.py\", line 565, in _execute_command\n conn = self.connection or pool.get_connection(command_name, **options)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/site-packages/redis/connection.py\", line 1417, in get_connection\n connection = self.make_connection()\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/site-packages/redis/connection.py\", line 1463, in make_connection\n return self.connection_class(**self.connection_kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/local/lib/python3.12/site-packages/redis/connection.py\", line 1013, in __init__\n super().__init__(**kwargs)\n File \"/usr/local/lib/python3.12/site-packages/redis/connection.py\", line 684, in __init__\n super().__init__(**kwargs)\nTypeError: AbstractConnection.__init__() got an unexpected keyword argument 'connection_pool'", "timestamp": "2025-04-11T08:47:09.997584+00:00"}

Below is my code for connecting with sentinel master node.

`def connect_to_redis(self):

logger.info(f"Redis version in use: {redis.__version__}")
    logger.info("Inside connect_to_redis")

    use_tls = os.getenv("REDIS_USE_TLS", "true").lower() == "true"
    cacert_path = os.getenv("REDIS_CACERT_PATH", "/etc/rediscert/ca.crt")

    sentinel_addresses_raw = os.getenv("REDIS_SENTINEL_ADDRESSES", "sentinel.redis-ptdev5-ns.svc.cluster.local:26379")
    sentinel_addresses = sentinel_addresses_raw.strip("[]").split(",")
    sentinel_master_name = os.getenv("REDIS_SENTINEL_MASTER_NAME", "master")

    dial_timeout = int(os.getenv("REDIS_DIAL_TIMEOUT", "2000")) / 1000
    read_timeout = int(os.getenv("REDIS_READ_TIMEOUT", "200")) / 1000
    write_timeout = int(os.getenv("REDIS_WRITE_TIMEOUT", "200")) / 1000

    if not (sentinel_addresses and sentinel_addresses[0]):
        raise Exception("Redis is not configured - REDIS_SENTINEL_ADDRESSES required")

    sentinel_addrs = []
    for addr in sentinel_addresses:
        addr = addr.strip()
        if addr:
            if ':' in addr:
                host, port_str = addr.rsplit(':', 1)
                port = int(port_str.strip("]'\""))
            else:
                host = addr
                port = 26379
            sentinel_addrs.append((host, port))

    try:
        connection_class = redis.SSLConnection if use_tls else redis.Connection

        sentinel = Sentinel(
            sentinel_addrs,
            socket_timeout=read_timeout,
            connection_class=connection_class,
            ssl=use_tls if use_tls else None,
            ssl_ca_certs=cacert_path if use_tls else None,
        )

        global redis_client
        redis_client = sentinel.master_for(
            service_name=sentinel_master_name,
            socket_timeout=read_timeout,
        )

        try:
            redis_client.ping()
            logger.info("Successfully connected to Redis")
        except redis.RedisError as e:
            logger.warning(f"Redis client initialized, but ping failed: {e}")
            pass

    except Exception as e:
        logger.error(f"Redis sentinel connection setup failed: {e}")
        raise`

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions