Don't hold lock on initial client construction
parent
3ebb7ab6b1
commit
b2eacb85d4
|
@ -22,7 +22,6 @@ from typing import Dict
|
|||
from contextlib import asynccontextmanager, AsyncExitStack
|
||||
|
||||
import trio
|
||||
import tractor
|
||||
|
||||
from . import get_brokermod
|
||||
from ..log import get_logger
|
||||
|
@ -30,10 +29,12 @@ from ..log import get_logger
|
|||
|
||||
log = get_logger(__name__)
|
||||
|
||||
_cache: Dict[str, 'Client'] = {}
|
||||
|
||||
_cache: Dict[str, 'Client'] = {} # noqa
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def get_cached_client(
|
||||
async def open_cached_client(
|
||||
brokername: str,
|
||||
*args,
|
||||
**kwargs,
|
||||
|
@ -77,7 +78,8 @@ async def get_cached_client(
|
|||
yield client
|
||||
|
||||
finally:
|
||||
if client is not None:
|
||||
# if no more consumers, teardown the client
|
||||
client._consumers -= 1
|
||||
if client._consumers <= 0:
|
||||
# teardown the client
|
||||
await client._exit_stack.aclose()
|
||||
|
|
Loading…
Reference in New Issue