Skip to content

Commit c8633ad

Browse files
chore: allow sync init of AsyncConnector
1 parent 35d417d commit c8633ad

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

google/cloud/alloydb/connector/async_connector.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,13 @@ def __init__(
6363
# otherwise use application default credentials
6464
else:
6565
self._credentials, _ = default(scopes=scopes)
66-
self._keys = asyncio.create_task(generate_keys())
66+
67+
# check if AsyncConnector is being initialized with event loop running
68+
# Otherwise we will lazy init keys
69+
try:
70+
self._keys = asyncio.create_task(generate_keys())
71+
except RuntimeError:
72+
self._keys = None
6773
self._client: Optional[AlloyDBClient] = None
6874

6975
async def connect(
@@ -90,6 +96,8 @@ async def connect(
9096
Returns:
9197
connection: A DBAPI connection to the specified AlloyDB instance.
9298
"""
99+
if self._keys is None:
100+
self._keys = asyncio.create_task(generate_keys)
93101
if self._client is None:
94102
# lazy init client as it has to be initialized in async context
95103
self._client = AlloyDBClient(

tests/unit/test_async_connector.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,8 @@ async def test_connect_unsupported_driver(
191191
exc_info.value.args[0]
192192
== "Driver 'bad_driver' is not a supported database driver."
193193
)
194+
195+
196+
def test_synchronous_init(credentials: FakeCredentials) -> None:
197+
connector = AsyncConnector(credentials)
198+
assert connector._keys is None

0 commit comments

Comments
 (0)