Daniele Varrazzo <[email protected]> added the comment:
I have stumbled in this bug, or something similar, implementing psycopg3 async
connection pool. A function such as the following fails but only in Python 3.6
(tested 3.6.12):
async def wait(self, timeout: float) -> AsyncConnection:
"""Wait for a connection to be set and return it.
Raise an exception if the wait times out or if fail() is called.
"""
async with self._cond:
if not (self.conn or self.error):
try:
await asyncio.wait_for(self._cond.wait(), timeout)
except asyncio.TimeoutError:
# HERE
self.error = PoolTimeout(
f"couldn't get a connection after {timeout} sec"
)
In python 3.6, printing self._cond.locked() in the HERE position gives False,
even if it's inside the with block. Everything grinds to a halt afterwards.
However I don't have the same problem in other Python versions (3.7.10, 3.8.5
among the ones tested) so I'm not sure it is the same issue.
Is this a manifestation of the same bug or a different one? Is there any
workaround or should I make the async pool just not supported on Python 3.6?
----------
nosy: +piro
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue42600>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com