GoogleCloudPlatform / GoogleCloudPlatform/cloud-sql-python-connector

Consider `AsyncConnector` object for async interface

未關閉
#687 2 則留言 2 個 reaction 已指派 1 人 已指派給 @kgala2 在 GitHub 檢視
priority: p2 type: feature request
主要語言
Python
星號
344
分支
89
平均合併
5 小時 33 分鐘
30 天內合併 PR
2

描述

### Feature Description

Currently the `Connector` object is the main entrypoint for both synchronous and async driver implementations.

The synchronous drivers are called via `connector.connect` while the async drivers via `connector.connect_async` with the synchronous version basically just being a simple wrapper around the async method.

This issue is to keep an eye on considering moving the async drivers to a separate object and entrypoint of `AsyncConnector`.

This would allow for clear distinctions between the two and give flexibility in the interfaces moving forward.

### Sample code

```Python
# current implementation
async def main():
# get current running event loop to be used with Connector
loop = asyncio.get_running_loop()
# intialize Connector object as async context manager
async with Connector(loop=loop) as connector:
# create connection to Cloud SQL database
conn: asyncpg.Connection = await connector.connect_async(
"project:region:instance", # Cloud SQL instance connection name
"asyncpg",
user="my-user",
password="my-password",
db="my-db-name"
# ... additional database driver args
)

# new AsyncConnector object
async def main():
async with AsyncConnector() as connector:
# create connection to Cloud SQL database
conn: asyncpg.Connection = await connector.connect(
"project:region:instance", # Cloud SQL instance connection name
"asyncpg",
user="my-user",
password="my-password",
db="my-db-name"
# ... additional database driver args
)
```

### Alternatives Considered

_No response_

### Additional Details

_No response_

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。