This repository was archived by the owner on Aug 19, 2025. It is now read-only.

Description
In a highly refactored codebase using the Database class from databases/core.py, I've encountered a "too many connections" error. While investigating, I found comment on Stack Overflow suggesting that the library's connection management might be inefficient. Reviewing the code, I suspect the way connections are managed per task might be a contributing factor.
The current implementation uses a _connection_map
keyed by asyncio.current_task()
. This means each coroutine, including nested ones, gets its own connection. This can potentially result in a large number of connections being opened in complex applications.
To potentially address this, can we use contextvars to manage a single connection among parent and nested tasks. By storing the connection in a context variable, nested coroutines can reuse their parent task's connection, reducing the need to open multiple connections.