From: Daniele Varrazzo Date: Sat, 20 Feb 2021 00:19:35 +0000 (+0100) Subject: Force pool num_workers to be > 0 X-Git-Tag: 3.0.dev0~87^2~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52a80f25098d95a27c99ec78286aa23a5df766c9;p=thirdparty%2Fpsycopg.git Force pool num_workers to be > 0 it might work with num_workers = 0, however it's not trivial, there is some deadlock to avoid at creation time. --- diff --git a/psycopg3/psycopg3/pool.py b/psycopg3/psycopg3/pool.py index 1e4fdc4bc..259ce2621 100644 --- a/psycopg3/psycopg3/pool.py +++ b/psycopg3/psycopg3/pool.py @@ -56,6 +56,10 @@ class ConnectionPool: self.__class__._num_pool += 1 name = f"pool-{self._num_pool}" + if num_workers < 1: + # TODO: allow num_workers to be 0 - sync pool? + raise ValueError("num_workers must be at least 1") + self.conninfo = conninfo self.kwargs: Dict[str, Any] = kwargs or {} self._configure: Callable[[Connection], None] diff --git a/tests/test_pool.py b/tests/test_pool.py index 72bb5c2b0..db50f85f9 100644 --- a/tests/test_pool.py +++ b/tests/test_pool.py @@ -11,18 +11,18 @@ from psycopg3.pq import TransactionStatus def test_minconn_maxconn(dsn): - p = pool.ConnectionPool(dsn, num_workers=0) + p = pool.ConnectionPool(dsn) assert p.minconn == p.maxconn == 4 - p = pool.ConnectionPool(dsn, minconn=2, num_workers=0) + p = pool.ConnectionPool(dsn, minconn=2) assert p.minconn == p.maxconn == 2 - p = pool.ConnectionPool(dsn, minconn=2, maxconn=4, num_workers=0) + p = pool.ConnectionPool(dsn, minconn=2, maxconn=4) assert p.minconn == 2 assert p.maxconn == 4 with pytest.raises(ValueError): - pool.ConnectionPool(dsn, minconn=4, maxconn=2, num_workers=0) + pool.ConnectionPool(dsn, minconn=4, maxconn=2) def test_its_really_a_pool(dsn):