From dd9b525a4851a7d96bf7e0c7732f7329fe9f7805 Mon Sep 17 00:00:00 2001 From: goodboy Date: Fri, 13 Feb 2026 14:34:45 -0500 Subject: [PATCH] Use `name=__name__` for logs throughout `.service` Change all `.service` sub-modules to use `get_logger(name=__name__)` for per-submod instances vs a shared `._util.log`. Deats, - import `get_logger()` and `get_console_log()` from top-level `piker.log` instead of `._util` for all. - drop `log` and `get_console_log()` partial from `._util`. - add `name=subsys` kwarg to `get_console_log()` call in `_actor_runtime.maybe_open_pikerd()`. - add `name='piker.service'` to `get_console_log()` in `_ahab.open_ahabd()`. - change default `loglevel` from `None` to `'cancel'` in `_ahab.open_ahabd()`. - add sanity check: `assert log.name == 'piker.service'` in `_daemon.maybe_spawn_daemon()`. - change `print()` -> `log.info()` in `_registry.find_service()`. - drop stray `from piker.service._util import log` import in `brokers._daemon.spawn_brokerd()`. Styling/cleanups, - drop blank lines from various fn sigs. - do more sin-ws union type annots. - add more multiline style to `or` expressions in `_actor_runtime` and `_registry`. - update `._util` docstring with TODO about `import`-time console log setup. - add TODO comments in `_registry` about UDS registry support. - use `.aid.uid` from actor in `_registry.open_registry()`. - add intermediate var `reg_addrs` in `_registry.open_registry()` (bc i was tracing rtvs value issues in `tractor`). - add `pformat` import to `.elastic` (code path is currently not used but figured might as well appease the linter..) (this commit msg was generated in some part by [`claude-code`][claude-code-gh]) [claude-code-gh]: https://github.com/anthropics/claude-code --- piker/brokers/_daemon.py | 7 ++-- piker/service/_actor_runtime.py | 11 ++++-- piker/service/_ahab.py | 15 ++++--- piker/service/_daemon.py | 11 +++--- piker/service/_mngr.py | 6 +-- piker/service/_registry.py | 69 ++++++++++++++++++++++----------- piker/service/_util.py | 18 +++------ piker/service/elastic.py | 15 +++++-- piker/service/marketstore.py | 7 ++-- 9 files changed, 97 insertions(+), 62 deletions(-) diff --git a/piker/brokers/_daemon.py b/piker/brokers/_daemon.py index 0362b4bd..1474bc24 100644 --- a/piker/brokers/_daemon.py +++ b/piker/brokers/_daemon.py @@ -200,7 +200,6 @@ def broker_init( async def spawn_brokerd( - brokername: str, loglevel: str | None = None, @@ -208,8 +207,10 @@ async def spawn_brokerd( ) -> bool: - from piker.service._util import log # use service mngr log - log.info(f'Spawning {brokername} broker daemon') + log.info( + f'Spawning broker-daemon,\n' + f'backend: {brokername!r}' + ) ( brokermode, diff --git a/piker/service/_actor_runtime.py b/piker/service/_actor_runtime.py index 0524b863..9991c027 100644 --- a/piker/service/_actor_runtime.py +++ b/piker/service/_actor_runtime.py @@ -31,9 +31,12 @@ from contextlib import ( import tractor import trio -from ._util import ( +from piker.log import ( get_console_log, ) +from ._util import ( + subsys, +) from ._mngr import ( Services, ) @@ -68,7 +71,7 @@ async def open_piker_runtime( # and spawn the service tree distributed per that. start_method: str = 'trio', - tractor_runtime_overrides: dict | None = None, + tractor_runtime_overrides: dict|None = None, **tractor_kwargs, ) -> tuple[ @@ -96,7 +99,8 @@ async def open_piker_runtime( # setting it as the root actor on localhost. registry_addrs = ( registry_addrs - or [_default_reg_addr] + or + [_default_reg_addr] ) if ems := tractor_kwargs.pop('enable_modules', None): @@ -271,6 +275,7 @@ async def maybe_open_pikerd( ''' if loglevel: get_console_log( + name=subsys, level=loglevel ) diff --git a/piker/service/_ahab.py b/piker/service/_ahab.py index 4cccf855..94b18c9d 100644 --- a/piker/service/_ahab.py +++ b/piker/service/_ahab.py @@ -49,13 +49,15 @@ from requests.exceptions import ( ReadTimeout, ) -from ._mngr import Services -from ._util import ( - log, # sub-sys logger +from piker.log import ( get_console_log, + get_logger, ) +from ._mngr import Services from .. import config +log = get_logger(name=__name__) + class DockerNotStarted(Exception): 'Prolly you dint start da daemon bruh' @@ -336,13 +338,16 @@ class Container: async def open_ahabd( ctx: tractor.Context, endpoint: str, # ns-pointer str-msg-type - loglevel: str | None = None, + loglevel: str = 'cancel', **ep_kwargs, ) -> None: - log = get_console_log(loglevel or 'cancel') + log = get_console_log( + level=loglevel, + name='piker.service', + ) async with open_docker() as client: diff --git a/piker/service/_daemon.py b/piker/service/_daemon.py index ef110fc3..7cd7cdd1 100644 --- a/piker/service/_daemon.py +++ b/piker/service/_daemon.py @@ -45,7 +45,6 @@ log = get_logger(name=__name__) @acm async def maybe_spawn_daemon( - service_name: str, service_task_target: Callable, @@ -69,10 +68,12 @@ async def maybe_spawn_daemon( clients. ''' - get_console_log( + log = get_console_log( level=loglevel, name=__name__, ) + assert log.name == 'piker.service' + # serialize access to this section to avoid # 2 or more tasks racing to create a daemon lock = Services.locks[service_name] @@ -159,8 +160,7 @@ async def maybe_spawn_daemon( async def spawn_emsd( - - loglevel: str | None = None, + loglevel: str|None = None, **extra_tractor_kwargs ) -> bool: @@ -197,9 +197,8 @@ async def spawn_emsd( @acm async def maybe_open_emsd( - brokername: str, - loglevel: str | None = None, + loglevel: str|None = None, **pikerd_kwargs, diff --git a/piker/service/_mngr.py b/piker/service/_mngr.py index 726a34c8..38fc1a3e 100644 --- a/piker/service/_mngr.py +++ b/piker/service/_mngr.py @@ -34,9 +34,9 @@ from tractor import ( Portal, ) -from ._util import ( - log, # sub-sys logger -) +from piker.log import get_logger + +log = get_logger(name=__name__) # TODO: we need remote wrapping and a general soln: diff --git a/piker/service/_registry.py b/piker/service/_registry.py index 94ccbc68..e24539e2 100644 --- a/piker/service/_registry.py +++ b/piker/service/_registry.py @@ -27,15 +27,29 @@ from typing import ( ) import tractor -from tractor import Portal - -from ._util import ( - log, # sub-sys logger +from tractor import ( + msg, + Actor, + Portal, ) +from piker.log import get_logger + +log = get_logger(name=__name__) + +# TODO? default path-space for UDS registry? +# [ ] needs to be Xplatform tho! +# _default_registry_path: Path = ( +# Path(os.environ['XDG_RUNTIME_DIR']) +# /'piker' +# ) + _default_registry_host: str = '127.0.0.1' _default_registry_port: int = 6116 -_default_reg_addr: tuple[str, int] = ( +_default_reg_addr: tuple[ + str, + int, # |str TODO, once we support UDS, see above. +] = ( _default_registry_host, _default_registry_port, ) @@ -75,16 +89,22 @@ async def open_registry( ''' global _tractor_kwargs - actor = tractor.current_actor() - uid = actor.uid - preset_reg_addrs: list[tuple[str, int]] = Registry.addrs + actor: Actor = tractor.current_actor() + aid: msg.Aid = actor.aid + uid: tuple[str, str] = aid.uid + preset_reg_addrs: list[ + tuple[str, int] + ] = Registry.addrs if ( preset_reg_addrs - and addrs + and + addrs ): if preset_reg_addrs != addrs: # if any(addr in preset_reg_addrs for addr in addrs): - diff: set[tuple[str, int]] = set(preset_reg_addrs) - set(addrs) + diff: set[ + tuple[str, int] + ] = set(preset_reg_addrs) - set(addrs) if diff: log.warning( f'`{uid}` requested only subset of registrars: {addrs}\n' @@ -98,7 +118,6 @@ async def open_registry( ) was_set: bool = False - if ( not tractor.is_root_process() and @@ -115,16 +134,23 @@ async def open_registry( f"`{uid}` registry should already exist but doesn't?" ) - if ( - not Registry.addrs - ): + if not Registry.addrs: was_set = True - Registry.addrs = addrs or [_default_reg_addr] + Registry.addrs = ( + addrs + or + [_default_reg_addr] + ) # NOTE: only spot this seems currently used is inside # `.ui._exec` which is the (eventual qtloops) bootstrapping # with guest mode. - _tractor_kwargs['registry_addrs'] = Registry.addrs + reg_addrs: list[tuple[str, str|int]] = Registry.addrs + # !TODO, a struct-API to stringently allow this only in special + # cases? + # -> better would be to have some way to (atomically) rewrite + # and entire `RuntimeVars`?? ideas welcome obvi.. + _tractor_kwargs['registry_addrs'] = reg_addrs try: yield Registry.addrs @@ -149,7 +175,7 @@ async def find_service( | None ): # try: - reg_addrs: list[tuple[str, int]] + reg_addrs: list[tuple[str, int|str]] async with open_registry( addrs=( registry_addrs @@ -172,15 +198,13 @@ async def find_service( only_first=first_only, # if set only returns single ref ) as maybe_portals: if not maybe_portals: - # log.info( - print( + log.info( f'Could NOT find service {service_name!r} -> {maybe_portals!r}' ) yield None return - # log.info( - print( + log.info( f'Found service {service_name!r} -> {maybe_portals}' ) yield maybe_portals @@ -195,8 +219,7 @@ async def find_service( async def check_for_service( service_name: str, - -) -> None | tuple[str, int]: +) -> None|tuple[str, int]: ''' Service daemon "liveness" predicate. diff --git a/piker/service/_util.py b/piker/service/_util.py index bdf23dab..614e4868 100644 --- a/piker/service/_util.py +++ b/piker/service/_util.py @@ -14,20 +14,12 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . """ -Sub-sys module commons. +Sub-sys module commons (if any ?? Bp). """ -from functools import partial - -from ..log import ( - get_logger, - get_console_log, -) subsys: str = 'piker.service' -log = get_logger(subsys) - -get_console_log = partial( - get_console_log, - name=subsys, -) +# ?TODO, if we were going to keep a `get_console_log()` in here to be +# invoked at `import`-time, how do we dynamically hand in the +# `level=` value? seems too early in the runtime to be injected +# right? diff --git a/piker/service/elastic.py b/piker/service/elastic.py index 902f4fde..f79f5bb3 100644 --- a/piker/service/elastic.py +++ b/piker/service/elastic.py @@ -16,6 +16,7 @@ from __future__ import annotations from contextlib import asynccontextmanager as acm +from pprint import pformat from typing import ( Any, TYPE_CHECKING, @@ -26,12 +27,17 @@ import asks if TYPE_CHECKING: import docker from ._ahab import DockerContainer + from . import ( + Services, + ) -from ._util import log # sub-sys logger -from ._util import ( +from piker.log import ( get_console_log, + get_logger, ) +log = get_logger(name=__name__) + # container level config _config = { @@ -67,7 +73,10 @@ def start_elasticsearch( elastic ''' - get_console_log('info', name=__name__) + get_console_log( + level='info', + name=__name__, + ) dcntr: DockerContainer = client.containers.run( 'piker:elastic', diff --git a/piker/service/marketstore.py b/piker/service/marketstore.py index c9f49420..9cfc7a13 100644 --- a/piker/service/marketstore.py +++ b/piker/service/marketstore.py @@ -52,17 +52,18 @@ import pendulum # TODO: import this for specific error set expected by mkts client # import purerpc -from ..data.feed import maybe_open_feed +from piker.data.feed import maybe_open_feed from . import Services -from ._util import ( - log, # sub-sys logger +from piker.log import ( get_console_log, + get_logger, ) if TYPE_CHECKING: import docker from ._ahab import DockerContainer +log = get_logger(name=__name__) # ahabd-supervisor and container level config