@@ -80,6 +80,7 @@ class _BaseMultiCallable:
80
80
_request_serializer : SerializingFunction
81
81
_response_deserializer : DeserializingFunction
82
82
_interceptors : Optional [Sequence [ClientInterceptor ]]
83
+ _references : List [Any ]
83
84
_loop : asyncio .AbstractEventLoop
84
85
85
86
# pylint: disable=too-many-arguments
@@ -90,6 +91,7 @@ def __init__(
90
91
request_serializer : SerializingFunction ,
91
92
response_deserializer : DeserializingFunction ,
92
93
interceptors : Optional [Sequence [ClientInterceptor ]],
94
+ references : List [Any ],
93
95
loop : asyncio .AbstractEventLoop ,
94
96
) -> None :
95
97
self ._loop = loop
@@ -98,6 +100,7 @@ def __init__(
98
100
self ._request_serializer = request_serializer
99
101
self ._response_deserializer = response_deserializer
100
102
self ._interceptors = interceptors
103
+ self ._references = references
101
104
102
105
@staticmethod
103
106
def _init_metadata (
@@ -370,6 +373,11 @@ async def _close(self, grace): # pylint: disable=too-many-branches
370
373
async def close (self , grace : Optional [float ] = None ):
371
374
await self ._close (grace )
372
375
376
+ def __del__ (self ):
377
+ if hasattr (self , '_channel' ):
378
+ if not self ._channel .closed ():
379
+ self ._channel .close ()
380
+
373
381
def get_state (self ,
374
382
try_to_connect : bool = False ) -> grpc .ChannelConnectivity :
375
383
result = self ._channel .check_connectivity_state (try_to_connect )
@@ -397,7 +405,7 @@ def unary_unary(
397
405
return UnaryUnaryMultiCallable (self ._channel , _common .encode (method ),
398
406
request_serializer ,
399
407
response_deserializer ,
400
- self ._unary_unary_interceptors ,
408
+ self ._unary_unary_interceptors , [ self ],
401
409
self ._loop )
402
410
403
411
def unary_stream (
@@ -409,7 +417,7 @@ def unary_stream(
409
417
return UnaryStreamMultiCallable (self ._channel , _common .encode (method ),
410
418
request_serializer ,
411
419
response_deserializer ,
412
- self ._unary_stream_interceptors ,
420
+ self ._unary_stream_interceptors , [ self ],
413
421
self ._loop )
414
422
415
423
def stream_unary (
@@ -421,7 +429,7 @@ def stream_unary(
421
429
return StreamUnaryMultiCallable (self ._channel , _common .encode (method ),
422
430
request_serializer ,
423
431
response_deserializer ,
424
- self ._stream_unary_interceptors ,
432
+ self ._stream_unary_interceptors , [ self ],
425
433
self ._loop )
426
434
427
435
def stream_stream (
@@ -434,7 +442,7 @@ def stream_stream(
434
442
request_serializer ,
435
443
response_deserializer ,
436
444
self ._stream_stream_interceptors ,
437
- self ._loop )
445
+ [ self ], self ._loop )
438
446
439
447
440
448
def insecure_channel (
0 commit comments