MagicStack / MagicStack/asyncpg
asyncpg.exceptions._base.InterfaceError: cannot call Connection.fetch(): connection has been released back to the pool
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 8.1k
- フォーク
- 468
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
* **asyncpg version**: 0.26.0
* **PostgreSQL version**: 12.0
* **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](https://github.com/magicstack/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 0x7fd3d018e550>
but when go to the background task query , the pool.acquire, got an "released"
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]

コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、issue 内の Sanic と tortoise-orm のリクエストハンドラーとバックグラウンドタスクの例から始め、次にスクリーンショットに示されている pool.acquire と pool release の経路を追跡します。可能であれば、解放された PoolConnectionProxy のエラーを再現し、バックグラウンドクエリが解放後の接続を使用しているかどうかを判断してください。原因と、プロジェクト側の修正または使用方法に関する問題の確認のいずれかが文書化されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- postgresql, python
- 領域
- backend, databases
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 20/100