@@ -151,11 +151,11 @@ class TableClient(BaseTableClient):
151151 def __init__ (self , driver , table_client_settings = None ):
152152 # type:(ydb.Driver, ydb.TableClientSettings) -> None
153153 super ().__init__ (driver = driver , table_client_settings = table_client_settings )
154- self ._pool : SessionPool = SessionPool ( self . _driver , 10 )
154+ self ._pool : Optional [ SessionPool ] = None
155155
156156 def __del__ (self ):
157157 if not self ._pool ._terminating :
158- asyncio .get_running_loop .call_soon (self ._pool . stop )
158+ asyncio .get_running_loop .call_soon (self ._stop_pool_if_needed )
159159
160160 def session (self ):
161161 return Session (self ._driver , self ._table_client_settings )
@@ -176,6 +176,14 @@ async def scan_query(self, query, parameters=None, settings=None): # pylint: di
176176 lambda resp : _wrap_scan_query_response (resp , self ._table_client_settings ),
177177 )
178178
179+ def _init_pool_if_needed (self ):
180+ if self ._pool is None :
181+ self ._pool = SessionPool (self ._driver , 10 )
182+
183+ async def _stop_pool_if_needed (self , timeout = 10 ):
184+ if self ._pool is not None :
185+ await self ._pool .stop (timeout = timeout )
186+
179187 async def create_table (
180188 self ,
181189 path : str ,
@@ -192,6 +200,8 @@ async def create_table(
192200 :return: Operation or YDB error otherwise.
193201 """
194202
203+ self ._init_pool_if_needed ()
204+
195205 async def callee (session : Session ):
196206 return await session .create_table (path = path , table_description = table_description , settings = settings )
197207
@@ -211,6 +221,8 @@ async def drop_table(
211221 :return: Operation or YDB error otherwise.
212222 """
213223
224+ self ._init_pool_if_needed ()
225+
214226 async def callee (session : Session ):
215227 return await session .drop_table (path = path , settings = settings )
216228
@@ -257,6 +269,8 @@ async def alter_table(
257269 :return: Operation or YDB error otherwise.
258270 """
259271
272+ self ._init_pool_if_needed ()
273+
260274 async def callee (session : Session ):
261275 return await session .alter_table (
262276 path = path ,
@@ -293,6 +307,8 @@ async def describe_table(
293307 :return: TableSchemeEntry or YDB error otherwise.
294308 """
295309
310+ self ._init_pool_if_needed ()
311+
296312 async def callee (session : Session ):
297313 return await session .describe_table (path = path , settings = settings )
298314
@@ -314,6 +330,8 @@ async def copy_table(
314330 :return: Operation or YDB error otherwise.
315331 """
316332
333+ self ._init_pool_if_needed ()
334+
317335 async def callee (session : Session ):
318336 return await session .copy_table (
319337 source_path = source_path ,
@@ -337,6 +355,8 @@ async def copy_tables(
337355 :return: Operation or YDB error otherwise.
338356 """
339357
358+ self ._init_pool_if_needed ()
359+
340360 async def callee (session : Session ):
341361 return await session .copy_tables (source_destination_pairs = source_destination_pairs , settings = settings )
342362
@@ -356,6 +376,8 @@ async def rename_tables(
356376 :return: Operation or YDB error otherwise.
357377 """
358378
379+ self ._init_pool_if_needed ()
380+
359381 async def callee (session : Session ):
360382 return await session .rename_tables (rename_items = rename_items , settings = settings )
361383
0 commit comments