From a1fdaebc309e1ee9a36bea9edea7cb95aa75c281 Mon Sep 17 00:00:00 2001 From: Jon Dufresne Date: Sun, 2 Dec 2018 09:47:00 -0800 Subject: [PATCH] Dropped deprecated PersistentConnectionPool This class was deprecated in 27cd6c4880161a715b1952be64cc96ebc968fa2b (Dec 2, 2012), which was first included in release 2.5. Enough time has passed for library uses to find an alternative solution. This class was untested. --- NEWS | 2 ++ doc/src/pool.rst | 8 ------- lib/pool.py | 55 ------------------------------------------------ 3 files changed, 2 insertions(+), 63 deletions(-) diff --git a/NEWS b/NEWS index 3f7b6088..3b0da760 100644 --- a/NEWS +++ b/NEWS @@ -31,6 +31,8 @@ Other changes: - Dropped support for Python 2.6, 3.2, 3.3. - Dropped `psycopg1` module. - Dropped deprecated `!register_tstz_w_secs()` (was previously a no-op). +- Dropped deprecated `!PersistentConnectionPool`. This pool class was mostly + designed to interact with Zope. Use `!ZPsycopgDA.pool` instead. - No longer use 2to3 during installation for Python 2 & 3 compatability. All source files are now compatible with Python 2 & 3 as is. - The `!psycopg2.test` package is no longer installed by ``python setup.py diff --git a/doc/src/pool.rst b/doc/src/pool.rst index 38cd08fa..95f4e232 100644 --- a/doc/src/pool.rst +++ b/doc/src/pool.rst @@ -58,11 +58,3 @@ be used. .. autoclass:: ThreadedConnectionPool .. note:: This pool class can be safely used in multi-threaded applications. - - -.. autoclass:: PersistentConnectionPool - - .. note:: - - This pool class is mostly designed to interact with Zope and probably - not useful in generic applications. diff --git a/lib/pool.py b/lib/pool.py index 075e29df..919fefd6 100644 --- a/lib/pool.py +++ b/lib/pool.py @@ -184,58 +184,3 @@ class ThreadedConnectionPool(AbstractConnectionPool): self._closeall() finally: self._lock.release() - - -class PersistentConnectionPool(AbstractConnectionPool): - """A pool that assigns persistent connections to different threads. - - Note that this connection pool generates by itself the required keys - using the current thread id. This means that until a thread puts away - a connection it will always get the same connection object by successive - `!getconn()` calls. This also means that a thread can't use more than one - single connection from the pool. - """ - - def __init__(self, minconn, maxconn, *args, **kwargs): - """Initialize the threading lock.""" - import warnings - warnings.warn("deprecated: use ZPsycopgDA.pool implementation", - DeprecationWarning) - - import threading - AbstractConnectionPool.__init__( - self, minconn, maxconn, *args, **kwargs) - self._lock = threading.Lock() - - # we we'll need the thread module, to determine thread ids, so we - # import it here and copy it in an instance variable - import thread - self.__thread = thread - - def getconn(self): - """Generate thread id and return a connection.""" - key = self.__thread.get_ident() - self._lock.acquire() - try: - return self._getconn(key) - finally: - self._lock.release() - - def putconn(self, conn=None, close=False): - """Put away an unused connection.""" - key = self.__thread.get_ident() - self._lock.acquire() - try: - if not conn: - conn = self._used[key] - self._putconn(conn, key, close) - finally: - self._lock.release() - - def closeall(self): - """Close all connections (even the one currently in use.)""" - self._lock.acquire() - try: - self._closeall() - finally: - self._lock.release()