GoogleCloudPlatform / GoogleCloudPlatform/cloud-sql-python-connector

Consider `AsyncConnector` object for async interface

Aberta
#687 2 comentários 2 reações 1 responsável Atribuída a @kgala2 Ver no GitHub
priority: p2 type: feature request
Linguagem predominante
Python
Estrelas
344
Forks
89
Merge médio
5h 33min
PRs com merge (30d)
2

Descrição

### 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_

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.