Class PingingPool (1.16.0)

  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.

Properties

labels

User-assigned labels for sesions created by the pool.

Returns
Type
Description
dict (str -> str)
labels assigned by the user

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

session

  session 
 ( 
 ** 
 kwargs 
 ) 
 

Check out a session from the pool.

Returns
Type
Description
SessionCheckout
a checkout instance, to be used as a context manager for accessing the session and returning it to the pool.
Design a Mobile Site
View Site in Mobile | Classic
Share by: