MagicStack / asyncpg

A fast PostgreSQL Database Client Library for Python/asyncio.
Apache License 2.0
7.01k stars 402 forks source link

Await connection in debugpy #1005

Open ekeric13 opened 1 year ago

ekeric13 commented 1 year ago

So I am using debugpy for debugging in vscode. Essentially this: python -m debugpy --listen 0.0.0.0:5678 ./myscript.py I am using asyncpg + sqlalchemy. Specifically an AsyncSession

When I set a breakpoint and use the debug console I can normally await async functions. But when I do this on an async query I get this error:

app_dev  | Traceback (most recent call last):
app_dev  |   File "/usr/local/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 755, in _start_transaction
app_dev  |     await self._transaction.start()
app_dev  |   File "/usr/local/lib/python3.11/site-packages/asyncpg/transaction.py", line 138, in start
app_dev  |     await self._connection.execute(query)
app_dev  |   File "/usr/local/lib/python3.11/site-packages/asyncpg/connection.py", line 317, in execute
app_dev  |     return await self._protocol.query(query, timeout)
app_dev  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app_dev  |   File "asyncpg/protocol/protocol.pyx", line 323, in query
app_dev  |   File "asyncpg/protocol/protocol.pyx", line 707, in asyncpg.protocol.protocol.BaseProtocol._check_state
app_dev  | asyncpg.exceptions._base.InterfaceError: cannot perform operation: another operation is in progress

Is there a way I can await async queries in the debug console? Please let me know if this is a sqlAlchemy issue.

gospodima commented 2 months ago

I am getting the same error while running debug on fastapi + sqlalchemy project. Are there any updates on this issue?

My vscode debug config:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python Debugger: FastAPI",
            "type": "debugpy",
            "request": "launch",
            "cwd": "${workspaceFolder}",
            "module": "uvicorn",
            "args": [
                "app.main:app",
                "--reload"
            ],
            "jinja": true,
            "justMyCode": false
        }
    ]
}

UPD: looks like the issue does not occur in case of replacing asyncpg with psycopg (3.2.1).