You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Do you use a PostgreSQL SaaS? If so, which? Can you reproduce : NO, from pg docker
the issue with a local PostgreSQL install?: YES,
Python version: Python 3.9.13
Platform: MAC
Do you use pgbouncer?: No
Did you install asyncpg with pip?: From tortoise-orm
If you built asyncpg locally, which version of Cython did you use?: No
Can the issue be reproduced under both asyncio and uvloop?: YES
I am using Sanic + tortoise-orm,
the test code as below:
when runs a query during the Request handler, it runs successfully
while runs in a background task, it report this error:
asyncpg.exceptions._base.InterfaceError: cannot call Connection.fetch(): connection has been released back to the pool
I found when the first time query, through the pool.acquire, got the right <PoolConnectionProxy <asyncpg.connection.Connection object at 0x7fd42102f9e0> 0x7fd3d018e550>
but when go to the background task query , the pool.acquire, got an "released" <PoolConnectionProxy [released] 0x7fd3d018e550>
I am confused how can I got an released PoolConnectionProxy from the same code
[query in the get Request method]
[query in the background task]
[the pool connection acquire method]
[the pool connection release method]
The text was updated successfully, but these errors were encountered:
Hi @iyuhang, thanks for giving this detailed report. Using another web framework (Quart) with asyncpg I am running into exactly the same issue: A background task is constantly acquiring released connections, resulting in
InterfaceError
cannot call Connection.fetch(): connection has been released back to the pool
Noteworthy to say that this behavior, keeps appearing and disappearing: My background task periodically runs a certain query every some minutes. And there are long streaks where all just works fine. And then there are periods, where all connection attempts fail due to this "released connection" issue.
It seems it has to do with sharing the same asyncpg connection pool across different Tasks. Could there be a bug in asyncpg?
the issue with a local PostgreSQL install?: YES,
uvloop?: YES
I am using Sanic + tortoise-orm,
the test code as below:
when runs a query during the Request handler, it runs successfully
while runs in a background task, it report this error:
asyncpg.exceptions._base.InterfaceError: cannot call Connection.fetch(): connection has been released back to the pool
I found when the first time query, through the pool.acquire, got the right <PoolConnectionProxy <asyncpg.connection.Connection object at 0x7fd42102f9e0> 0x7fd3d018e550>
but when go to the background task query , the pool.acquire, got an "released" <PoolConnectionProxy [released] 0x7fd3d018e550>
I am confused how can I got an released PoolConnectionProxy from the same code
[query in the get Request method]
[query in the background task]
[the pool connection acquire method]
[the pool connection release method]
The text was updated successfully, but these errors were encountered: