Skip to content

Commit ad9c387

Browse files
committed
Initialize asyncio queues in Pool in an async-def context
1 parent dd91aa3 commit ad9c387

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

asyncpg/pool.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,9 @@ class Pool:
308308
'_init', '_connect_args', '_connect_kwargs',
309309
'_working_addr', '_working_config', '_working_params',
310310
'_holders', '_initialized', '_initializing', '_closing',
311-
'_closed', '_connection_class', '_generation')
311+
'_closed', '_connection_class', '_generation',
312+
'_setup', '_max_queries', '_max_inactive_connection_lifetime'
313+
)
312314

313315
def __init__(self, *connect_args,
314316
min_size,
@@ -362,7 +364,7 @@ def __init__(self, *connect_args,
362364
self._holders = []
363365
self._initialized = False
364366
self._initializing = False
365-
self._queue = asyncio.LifoQueue(maxsize=self._maxsize)
367+
self._queue = None
366368

367369
self._working_addr = None
368370
self._working_config = None
@@ -377,15 +379,10 @@ def __init__(self, *connect_args,
377379
self._connect_args = connect_args
378380
self._connect_kwargs = connect_kwargs
379381

380-
for _ in range(max_size):
381-
ch = PoolConnectionHolder(
382-
self,
383-
max_queries=max_queries,
384-
max_inactive_time=max_inactive_connection_lifetime,
385-
setup=setup)
386-
387-
self._holders.append(ch)
388-
self._queue.put_nowait(ch)
382+
self._setup = setup
383+
self._max_queries = max_queries
384+
self._max_inactive_connection_lifetime = \
385+
max_inactive_connection_lifetime
389386

390387
async def _async__init__(self):
391388
if self._initialized:
@@ -404,6 +401,17 @@ async def _async__init__(self):
404401
self._initialized = True
405402

406403
async def _initialize(self):
404+
self._queue = asyncio.LifoQueue(maxsize=self._maxsize)
405+
for _ in range(self._maxsize):
406+
ch = PoolConnectionHolder(
407+
self,
408+
max_queries=self._max_queries,
409+
max_inactive_time=self._max_inactive_connection_lifetime,
410+
setup=self._setup)
411+
412+
self._holders.append(ch)
413+
self._queue.put_nowait(ch)
414+
407415
if self._minsize:
408416
# Since we use a LIFO queue, the first items in the queue will be
409417
# the last ones in `self._holders`. We want to pre-connect the

0 commit comments

Comments
 (0)