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

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions