#1310·asyncpg

在 _cancel() 期间发生 ConnectionError,但未捕获 CancelledError,导致调用者崩溃

作者: yemreck创建于 2026年3月9日更新于 2026年6月1日

Two issues in connect_utils.py:

1. _cancel() has no error handling around _create_ssl_connection

python
async def _cancel(*, loop, addr, params, backend_pid, backend_secret):
    ...
    if params.ssl and params.sslmode != SSLMode.allow:
        tr, pr = await _create_ssl_connection(...)  # ← no try/except!
    ...

The cancel request is best-effort (we're telling PostgreSQL to cancel a query on a connection that may already be dead). If opening the cancel connection fails, the error should be suppressed or wrapped in asyncpg.InterfaceError, not propagated as a raw ConnectionError.

2.

内容来源: MagicStack/asyncpg