diff --git a/tractor/_root.py b/tractor/_root.py index 5615bb6..608773a 100644 --- a/tractor/_root.py +++ b/tractor/_root.py @@ -85,6 +85,10 @@ async def open_root_actor( enable_modules: list | None = None, rpc_module_paths: list | None = None, + # NOTE: allow caller to ensure that only one registry exists + # and that this call creates it. + ensure_registry: bool = False, + ) -> Actor: ''' Runtime init entry point for ``tractor``. @@ -206,6 +210,12 @@ async def open_root_actor( # REGISTRAR if ponged_addrs: + if ensure_registry: + raise RuntimeError( + f'Failed to open `{name}`@{ponged_addrs}: ' + 'registry socket(s) already bound' + ) + # we were able to connect to an arbiter logger.info( f'Registry(s) seem(s) to exist @ {ponged_addrs}'