Class PingingPool (2.1.1)

PingingPool(size=10, default_timeout=10, ping_interval=3000, labels=None)

Concrete session pool implementation:

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

  • Sessions are used in "round-robin" order (LRU first).

  • "Pings" existing sessions in the background after a specified interval via an API call (session.ping()).

  • 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.

The application is responsible for calling ping at appropriate times, e.g. from a background thread.

Parameters

Name Description
size int

fixed pool size

default_timeout int

default timeout, in seconds, to wait for a returned session.

ping_interval int

interval at which to ping sessions.

labels dict (str -> str) or None

(Optional) user-assigned labels for sessions created by the pool.

Methods

bind

bind(database)

Associate the pool with a database.

Parameter
Name Description
database Database

database used by the pool: 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
`six.moves.queue.Empty if the queue is empty.
Returns
Type Description
Session an existing session from the pool, or a newly-created session.

ping

ping()

Refresh maybe-expired sessions in the pool.

This method is designed to be called from a background thread, or during the "idle" phase of an event loop.

put

put(session)

Return a session to the pool.

Never blocks: if the pool is full, raises.

Parameter
Name Description
session Session

the session being returned.

Exceptions
Type Description
`six.moves.queue.Full if the queue is full.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025年12月16日 UTC.