psycopg_pool - Connection pool implementations - psycopg 3.1.9 documentation
Psycopg - PostgreSQL database adapter for Python - Psycopg documentation
psycopg_pool
- Connection pool implementations
#
A connection pool is an object used to create and maintain a limited amount of PostgreSQL connections, reducing the time requested by the program to obtain a working connection and allowing an arbitrary large number of concurrent threads or tasks to use a controlled amount of resources on the server. See Connection pools for more details and usage pattern.
This package exposes a few connection pool classes:
-
ConnectionPool
is a synchronous connection pool yieldingConnection
objects and can be used by multithread applications. -
AsyncConnectionPool
has an interface similar toConnectionPool
, but withasyncio
functions replacing blocking functions, and yieldsAsyncConnection
instances. -
NullConnectionPool
is aConnectionPool
subclass exposing the same interface of its parent, but not keeping any unused connection in its state. See Null connection pools for details about related use cases. -
AsyncNullConnectionPool
has the same behaviour of theNullConnectionPool
, but with the same async interface of theAsyncConnectionPool
.
Note
The
psycopg_pool
package is distributed separately from the main
psycopg
package: use
pip
install
"psycopg[pool]"
, or
pip
install
psycopg_pool
, to make it available. See
Installing the connection pool
.
The version numbers indicated in this page refer to the
psycopg_pool
package, not to
psycopg
.
The
ConnectionPool
class
#
Pool exceptions #
The
AsyncConnectionPool
class
#
AsyncConnectionPool
has a very similar interface to the
ConnectionPool
class but its blocking methods are implemented as
async
coroutines. It
returns instances of
AsyncConnection
, or of its subclass if
specified so in the
connection_class
parameter.
Only the functions with different signature from
ConnectionPool
are
listed here.
Null connection pools #
New in version 3.1.
The
NullConnectionPool
is a
ConnectionPool
subclass which doesn’t create
connections preemptively and doesn’t keep unused connections in its state. See
Null connection pools
for further details.
The interface of the object is entirely compatible with its parent class. Its behaviour is similar, with the following differences:
The
AsyncNullConnectionPool
is, similarly, an
AsyncConnectionPool
subclass
with the same behaviour of the
NullConnectionPool
.