# Class FixedSizePool (3.68.0)

3.68.0 (latest) 3.67.0 3.66.0 3.65.0 3.64.0 3.63.0 3.62.0 3.61.0 3.60.0 3.59.0 3.58.0 3.57.0 3.56.0 3.55.0 3.54.0 3.53.0 3.52.0 3.51.0 3.50.1 3.46.0 3.45.0 3.44.0 3.43.0 3.42.0 3.41.0 3.40.1 3.39.0 3.38.0 3.37.0 3.36.0 3.35.1 3.34.0 3.33.0 3.32.0 3.31.0 3.30.0 3.29.0 3.28.0 3.27.1 3.26.0 3.25.0 3.24.0 3.23.0 3.22.2 3.21.0 3.20.0 3.19.0 3.18.0 3.17.0 3.16.0 3.15.1 3.14.1 3.13.0 3.12.1 3.11.1 3.10.0 3.9.0 3.8.0 3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.0 3.1.0 3.0.0 2.1.1 2.0.0 1.19.3 1.18.0 1.17.1 1.16.0 1.15.1 1.14.0 1.13.0 1.12.0 1.11.0 1.10.0

    FixedSizePool(
        size=10, default_timeout=10, labels=None, database_role=None, max_age_minutes=55
    )

Concrete session pool implementation:

- Pre-allocates / creates a fixed number of sessions.

- "Pings" existing sessions via `session.exists` before returning
  sessions that have not been used for more than 55 minutes and replaces
  expired sessions.

- Blocks, with a timeout, when `get` is called on an empty pool.
  Raises after timing out.

- Raises when `put` is called on a full pool. That error is
  never expected in normal practice, as users should be calling
  `get` followed by `put` whenever in need of a session.

| ## Parameters ||
|---|---|
| **Name** | **Description** |
| `size` | `int` fixed pool size |
| `default_timeout` | `int` default timeout, in seconds, to wait for a returned session. |
| `labels` | `dict (str -> str) or None` (Optional) user-assigned labels for sessions created by the pool. |
| `database_role` | `str` (Optional) user-assigned database_role for the session. |

## Methods

### bind

    bind(database)

Associate the pool with a database.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `database` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.database.Database` database used by the pool to used to create sessions when needed. |

### clear

    clear()

Delete all sessions in the pool.

### get

    get(timeout=None)

Check a session out from the pool.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `timeout` | `int` seconds to block waiting for an available session |

| **Exceptions** ||
|---|---|
| **Type** | **Description** |
| `` `CrossSync._Sync_Impl.QueueEmpty `` | if the queue is empty. |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.session.Session` | an existing session from the pool, or a newly-created session. |

### ping

    ping()

Check all sessions in the pool.

Delete those which are defunct.

### put

    put(session)

Return a session to the pool.

Never blocks: if the pool is full, raises.

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `session` | `https://docs.cloud.google.com/python/docs/reference/spanner/latest/google.cloud.spanner_v1.session.Session` the session being returned. |

| **Exceptions** ||
|---|---|
| **Type** | **Description** |
| `` `queue.Full `` | if the queue is full. |