@@ -151,11 +151,11 @@ class TableClient(BaseTableClient):
151
151
def __init__ (self , driver , table_client_settings = None ):
152
152
# type:(ydb.Driver, ydb.TableClientSettings) -> None
153
153
super ().__init__ (driver = driver , table_client_settings = table_client_settings )
154
- self ._pool : SessionPool = SessionPool ( self . _driver , 10 )
154
+ self ._pool : Optional [ SessionPool ] = None
155
155
156
156
def __del__ (self ):
157
157
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 )
159
159
160
160
def session (self ):
161
161
return Session (self ._driver , self ._table_client_settings )
@@ -176,6 +176,14 @@ async def scan_query(self, query, parameters=None, settings=None): # pylint: di
176
176
lambda resp : _wrap_scan_query_response (resp , self ._table_client_settings ),
177
177
)
178
178
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
+
179
187
async def create_table (
180
188
self ,
181
189
path : str ,
@@ -192,6 +200,8 @@ async def create_table(
192
200
:return: Operation or YDB error otherwise.
193
201
"""
194
202
203
+ self ._init_pool_if_needed ()
204
+
195
205
async def callee (session : Session ):
196
206
return await session .create_table (path = path , table_description = table_description , settings = settings )
197
207
@@ -211,6 +221,8 @@ async def drop_table(
211
221
:return: Operation or YDB error otherwise.
212
222
"""
213
223
224
+ self ._init_pool_if_needed ()
225
+
214
226
async def callee (session : Session ):
215
227
return await session .drop_table (path = path , settings = settings )
216
228
@@ -257,6 +269,8 @@ async def alter_table(
257
269
:return: Operation or YDB error otherwise.
258
270
"""
259
271
272
+ self ._init_pool_if_needed ()
273
+
260
274
async def callee (session : Session ):
261
275
return await session .alter_table (
262
276
path = path ,
@@ -293,6 +307,8 @@ async def describe_table(
293
307
:return: TableSchemeEntry or YDB error otherwise.
294
308
"""
295
309
310
+ self ._init_pool_if_needed ()
311
+
296
312
async def callee (session : Session ):
297
313
return await session .describe_table (path = path , settings = settings )
298
314
@@ -314,6 +330,8 @@ async def copy_table(
314
330
:return: Operation or YDB error otherwise.
315
331
"""
316
332
333
+ self ._init_pool_if_needed ()
334
+
317
335
async def callee (session : Session ):
318
336
return await session .copy_table (
319
337
source_path = source_path ,
@@ -337,6 +355,8 @@ async def copy_tables(
337
355
:return: Operation or YDB error otherwise.
338
356
"""
339
357
358
+ self ._init_pool_if_needed ()
359
+
340
360
async def callee (session : Session ):
341
361
return await session .copy_tables (source_destination_pairs = source_destination_pairs , settings = settings )
342
362
@@ -356,6 +376,8 @@ async def rename_tables(
356
376
:return: Operation or YDB error otherwise.
357
377
"""
358
378
379
+ self ._init_pool_if_needed ()
380
+
359
381
async def callee (session : Session ):
360
382
return await session .rename_tables (rename_items = rename_items , settings = settings )
361
383
0 commit comments