cloud-sql-python-connector
cloud-sql-python-connector copied to clipboard
Consider `AsyncConnector` object for async interface
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
# 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