@@ -41,6 +41,7 @@ def _get_connection_kwargs(self) -> dict:
4141 pool_recycle = url_options .get ("pool_recycle" )
4242 ssl = url_options .get ("ssl" )
4343 driver = url_options .get ("driver" )
44+ timeout = url_options .get ("connection_timeout" , 30 )
4445 trusted_connection = url_options .get ("trusted_connection" , "no" )
4546
4647 assert driver is not None , "The driver must be specified"
@@ -56,6 +57,7 @@ def _get_connection_kwargs(self) -> dict:
5657
5758 kwargs ["trusted_connection" ] = trusted_connection .lower ()
5859 kwargs ["driver" ] = driver
60+ kwargs ["timeout" ] = timeout
5961
6062 for key , value in self ._options .items ():
6163 # Coerce 'min_size' and 'max_size' for consistency.
@@ -77,8 +79,12 @@ async def connect(self) -> None:
7779 port = self ._database_url .port or 1433
7880 user = self ._database_url .username or getpass .getuser ()
7981 password = self ._database_url .password
82+ timeout = kwargs .pop ("timeout" )
8083
81- dsn = f"Driver={ driver } ;Database={ database } ;Server={ hostname } ,{ port } ;UID={ user } ;PWD={ password } ;"
84+ if port :
85+ dsn = f"Driver={ driver } ;Database={ database } ;Server={ hostname } ,{ port } ;UID={ user } ;PWD={ password } ;Connection+Timeout={ timeout } "
86+ else :
87+ dsn = f"Driver={ driver } ;Database={ database } ;Server={ hostname } ,{ port } ;UID={ user } ;PWD={ password } ;Connection+Timeout={ timeout } "
8288
8389 self ._pool = await aioodbc .create_pool (
8490 dsn = dsn ,
0 commit comments