From 87cd725adb6f3f56579e7fa88a030040d9658aac Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Tue, 7 Nov 2023 16:45:22 -0500 Subject: [PATCH] Add `open_root_actor(ensure_registry: bool)` Allows forcing the opened actor to either obtain the passed registry addrs or raise a runtime error. --- tractor/_root.py | 10 ++++++++++ 1 file changed, 10 insertions(+) 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}'