Skip to content

GeneratorExit error after setting callback on Redis instance from ConnectionPool (Python 3.13, asyncio, redis 7.1.0, Ubuntu #3856

@MM-X-C

Description

@MM-X-C

When using Python 3.13 and redis==7.1.0 on Ubuntu 20.04, a Redis instance obtained via ConnectionPool raises a GeneratorExit error after setting a callback.

 File "/usr/local/lib/python3.13/site-packages/redis/asyncio/connection.py", line 607, in read_response
    response = await self._parser.read_response(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        disable_decoding=disable_decoding
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
GeneratorExit
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/opt/fit-monitor-web/store/redis_store.py", line 18, in wrapper
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/redis/asyncio/client.py", line 725, in execute_command
    return await conn.retry.call_with_retry(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/redis/asyncio/retry.py", line 50, in call_with_retry
    return await do()
           ^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/redis/asyncio/client.py", line 700, in _send_command_parse_response
    return await self.parse_response(conn, command_name, **options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/redis/asyncio/client.py", line 746, in parse_response
    response = await connection.read_response()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/redis/asyncio/connection.py", line 627, in read_response
    await self.disconnect(nowait=True)
  File "/usr/local/lib/python3.13/site-packages/redis/asyncio/connection.py", line 482, in disconnect
    async with async_timeout(self.socket_connect_timeout):
               ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/asyncio/timeouts.py", line 90, in __aenter__
    raise RuntimeError("Timeout should be used inside a task")
RuntimeError: Timeout should be used inside a task

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions