Change remaining internals to use `Actor.reg_addrs`

multihomed
Tyler Goodlet 2023-10-19 12:40:37 -04:00
parent 1d6f55543d
commit 9da3b63644
4 changed files with 27 additions and 18 deletions

View File

@ -133,14 +133,12 @@ async def query_actor(
)
regaddr: list[tuple[str, int]] = arbiter_sockaddr
regstr: Portal
async with get_registry(
*(regaddr or actor._reg_addrs[0])
) as regstr:
reg_portal: Portal
regaddr: tuple[str, int] = regaddr or actor.reg_addrs[0]
async with get_registry(*regaddr) as reg_portal:
# TODO: return portals to all available actors - for now
# just the last one that registered
sockaddr: tuple[str, int] = await regstr.run_from_ns(
sockaddr: tuple[str, int] = await reg_portal.run_from_ns(
'self',
'find_actor',
name=name,
@ -155,6 +153,7 @@ async def find_actor(
registry_addrs: list[tuple[str, int]] | None = None,
only_first: bool = True,
raise_on_none: bool = False,
) -> AsyncGenerator[
Portal | list[Portal] | None,
@ -207,13 +206,20 @@ async def find_actor(
async with gather_contexts(
mngrs=maybe_portals,
) as maybe_portals:
print(f'Portalz: {maybe_portals}')
if not maybe_portals:
) as portals:
# log.runtime(
# 'Gathered portals:\n'
# f'{portals}'
# )
if not portals:
if raise_on_none:
raise RuntimeError(
f'No {name} found registered @ {registry_addrs}'
)
yield None
return
portals: list[Portal] = list(maybe_portals)
portals: list[Portal] = list(portals)
if only_first:
yield portals[0]
@ -250,9 +256,9 @@ async def wait_for_actor(
# TODO: use `.trionics.gather_contexts()` like
# above in `find_actor()` as well?
async with get_registry(
*(registry_addr or actor._reg_addrs[0]), # first if not passed
) as reg_portal:
reg_portal: Portal
regaddr: tuple[str, int] = registry_addr or actor.reg_addrs[0]
async with get_registry(*regaddr) as reg_portal:
sockaddrs = await reg_portal.run_from_ns(
'self',
'wait_for_actor',

View File

@ -85,7 +85,7 @@ async def open_root_actor(
enable_modules: list | None = None,
rpc_module_paths: list | None = None,
) -> typing.Any:
) -> Actor:
'''
Runtime init entry point for ``tractor``.
@ -195,7 +195,10 @@ async def open_root_actor(
async with trio.open_nursery() as tn:
for addr in registry_addrs:
tn.start_soon(ping_tpt_socket, addr)
tn.start_soon(
ping_tpt_socket,
tuple(addr), # TODO: just drop this requirement?
)
trans_bind_addrs: list[tuple[str, int]] = []

View File

@ -423,7 +423,7 @@ async def trio_proc(
await chan.send({
'_parent_main_data': subactor._parent_main_data,
'enable_modules': subactor.enable_modules,
'_reg_addrs': subactor._reg_addrs,
'reg_addrs': subactor.reg_addrs,
'bind_addrs': bind_addrs,
'_runtime_vars': _runtime_vars,
})

View File

@ -149,7 +149,7 @@ class ActorNursery:
loglevel=loglevel,
# verbatim relay this actor's registrar addresses
registry_addrs=current_actor()._reg_addrs,
registry_addrs=current_actor().reg_addrs,
)
parent_addr = self._actor.accept_addr
assert parent_addr