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-codefix_tractor_logging
parent
2516d97fe4
commit
9a97c477e2
|
|
@ -200,7 +200,6 @@ def broker_init(
|
||||||
|
|
||||||
|
|
||||||
async def spawn_brokerd(
|
async def spawn_brokerd(
|
||||||
|
|
||||||
brokername: str,
|
brokername: str,
|
||||||
loglevel: str | None = None,
|
loglevel: str | None = None,
|
||||||
|
|
||||||
|
|
@ -208,8 +207,10 @@ async def spawn_brokerd(
|
||||||
|
|
||||||
) -> bool:
|
) -> bool:
|
||||||
|
|
||||||
from piker.service._util import log # use service mngr log
|
log.info(
|
||||||
log.info(f'Spawning {brokername} broker daemon')
|
f'Spawning broker-daemon,\n'
|
||||||
|
f'backend: {brokername!r}'
|
||||||
|
)
|
||||||
|
|
||||||
(
|
(
|
||||||
brokermode,
|
brokermode,
|
||||||
|
|
|
||||||
|
|
@ -31,9 +31,12 @@ from contextlib import (
|
||||||
import tractor
|
import tractor
|
||||||
import trio
|
import trio
|
||||||
|
|
||||||
from ._util import (
|
from piker.log import (
|
||||||
get_console_log,
|
get_console_log,
|
||||||
)
|
)
|
||||||
|
from ._util import (
|
||||||
|
subsys,
|
||||||
|
)
|
||||||
from ._mngr import (
|
from ._mngr import (
|
||||||
Services,
|
Services,
|
||||||
)
|
)
|
||||||
|
|
@ -96,7 +99,8 @@ async def open_piker_runtime(
|
||||||
# setting it as the root actor on localhost.
|
# setting it as the root actor on localhost.
|
||||||
registry_addrs = (
|
registry_addrs = (
|
||||||
registry_addrs
|
registry_addrs
|
||||||
or [_default_reg_addr]
|
or
|
||||||
|
[_default_reg_addr]
|
||||||
)
|
)
|
||||||
|
|
||||||
if ems := tractor_kwargs.pop('enable_modules', None):
|
if ems := tractor_kwargs.pop('enable_modules', None):
|
||||||
|
|
@ -271,6 +275,7 @@ async def maybe_open_pikerd(
|
||||||
'''
|
'''
|
||||||
if loglevel:
|
if loglevel:
|
||||||
get_console_log(
|
get_console_log(
|
||||||
|
name=subsys,
|
||||||
level=loglevel
|
level=loglevel
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,13 +49,15 @@ from requests.exceptions import (
|
||||||
ReadTimeout,
|
ReadTimeout,
|
||||||
)
|
)
|
||||||
|
|
||||||
from ._mngr import Services
|
from piker.log import (
|
||||||
from ._util import (
|
|
||||||
log, # sub-sys logger
|
|
||||||
get_console_log,
|
get_console_log,
|
||||||
|
get_logger,
|
||||||
)
|
)
|
||||||
|
from ._mngr import Services
|
||||||
from .. import config
|
from .. import config
|
||||||
|
|
||||||
|
log = get_logger(name=__name__)
|
||||||
|
|
||||||
|
|
||||||
class DockerNotStarted(Exception):
|
class DockerNotStarted(Exception):
|
||||||
'Prolly you dint start da daemon bruh'
|
'Prolly you dint start da daemon bruh'
|
||||||
|
|
@ -336,13 +338,16 @@ class Container:
|
||||||
async def open_ahabd(
|
async def open_ahabd(
|
||||||
ctx: tractor.Context,
|
ctx: tractor.Context,
|
||||||
endpoint: str, # ns-pointer str-msg-type
|
endpoint: str, # ns-pointer str-msg-type
|
||||||
loglevel: str | None = None,
|
loglevel: str = 'cancel',
|
||||||
|
|
||||||
**ep_kwargs,
|
**ep_kwargs,
|
||||||
|
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
log = get_console_log(loglevel or 'cancel')
|
log = get_console_log(
|
||||||
|
level=loglevel,
|
||||||
|
name='piker.service',
|
||||||
|
)
|
||||||
|
|
||||||
async with open_docker() as client:
|
async with open_docker() as client:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,6 @@ log = get_logger(name=__name__)
|
||||||
|
|
||||||
@acm
|
@acm
|
||||||
async def maybe_spawn_daemon(
|
async def maybe_spawn_daemon(
|
||||||
|
|
||||||
service_name: str,
|
service_name: str,
|
||||||
service_task_target: Callable,
|
service_task_target: Callable,
|
||||||
|
|
||||||
|
|
@ -69,10 +68,12 @@ async def maybe_spawn_daemon(
|
||||||
clients.
|
clients.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
get_console_log(
|
log = get_console_log(
|
||||||
level=loglevel,
|
level=loglevel,
|
||||||
name=__name__,
|
name=__name__,
|
||||||
)
|
)
|
||||||
|
assert log.name == 'piker.service'
|
||||||
|
|
||||||
# serialize access to this section to avoid
|
# serialize access to this section to avoid
|
||||||
# 2 or more tasks racing to create a daemon
|
# 2 or more tasks racing to create a daemon
|
||||||
lock = Services.locks[service_name]
|
lock = Services.locks[service_name]
|
||||||
|
|
@ -159,7 +160,6 @@ async def maybe_spawn_daemon(
|
||||||
|
|
||||||
|
|
||||||
async def spawn_emsd(
|
async def spawn_emsd(
|
||||||
|
|
||||||
loglevel: str|None = None,
|
loglevel: str|None = None,
|
||||||
**extra_tractor_kwargs
|
**extra_tractor_kwargs
|
||||||
|
|
||||||
|
|
@ -197,7 +197,6 @@ async def spawn_emsd(
|
||||||
|
|
||||||
@acm
|
@acm
|
||||||
async def maybe_open_emsd(
|
async def maybe_open_emsd(
|
||||||
|
|
||||||
brokername: str,
|
brokername: str,
|
||||||
loglevel: str|None = None,
|
loglevel: str|None = None,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,9 @@ from tractor import (
|
||||||
Portal,
|
Portal,
|
||||||
)
|
)
|
||||||
|
|
||||||
from ._util import (
|
from piker.log import get_logger
|
||||||
log, # sub-sys logger
|
|
||||||
)
|
log = get_logger(name=__name__)
|
||||||
|
|
||||||
|
|
||||||
# TODO: we need remote wrapping and a general soln:
|
# TODO: we need remote wrapping and a general soln:
|
||||||
|
|
|
||||||
|
|
@ -27,15 +27,29 @@ from typing import (
|
||||||
)
|
)
|
||||||
|
|
||||||
import tractor
|
import tractor
|
||||||
from tractor import Portal
|
from tractor import (
|
||||||
|
msg,
|
||||||
from ._util import (
|
Actor,
|
||||||
log, # sub-sys logger
|
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_host: str = '127.0.0.1'
|
||||||
_default_registry_port: int = 6116
|
_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_host,
|
||||||
_default_registry_port,
|
_default_registry_port,
|
||||||
)
|
)
|
||||||
|
|
@ -75,16 +89,22 @@ async def open_registry(
|
||||||
|
|
||||||
'''
|
'''
|
||||||
global _tractor_kwargs
|
global _tractor_kwargs
|
||||||
actor = tractor.current_actor()
|
actor: Actor = tractor.current_actor()
|
||||||
uid = actor.uid
|
aid: msg.Aid = actor.aid
|
||||||
preset_reg_addrs: list[tuple[str, int]] = Registry.addrs
|
uid: tuple[str, str] = aid.uid
|
||||||
|
preset_reg_addrs: list[
|
||||||
|
tuple[str, int]
|
||||||
|
] = Registry.addrs
|
||||||
if (
|
if (
|
||||||
preset_reg_addrs
|
preset_reg_addrs
|
||||||
and addrs
|
and
|
||||||
|
addrs
|
||||||
):
|
):
|
||||||
if preset_reg_addrs != addrs:
|
if preset_reg_addrs != addrs:
|
||||||
# if any(addr in preset_reg_addrs for addr in 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:
|
if diff:
|
||||||
log.warning(
|
log.warning(
|
||||||
f'`{uid}` requested only subset of registrars: {addrs}\n'
|
f'`{uid}` requested only subset of registrars: {addrs}\n'
|
||||||
|
|
@ -98,7 +118,6 @@ async def open_registry(
|
||||||
)
|
)
|
||||||
|
|
||||||
was_set: bool = False
|
was_set: bool = False
|
||||||
|
|
||||||
if (
|
if (
|
||||||
not tractor.is_root_process()
|
not tractor.is_root_process()
|
||||||
and
|
and
|
||||||
|
|
@ -115,16 +134,23 @@ async def open_registry(
|
||||||
f"`{uid}` registry should already exist but doesn't?"
|
f"`{uid}` registry should already exist but doesn't?"
|
||||||
)
|
)
|
||||||
|
|
||||||
if (
|
if not Registry.addrs:
|
||||||
not Registry.addrs
|
|
||||||
):
|
|
||||||
was_set = True
|
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
|
# NOTE: only spot this seems currently used is inside
|
||||||
# `.ui._exec` which is the (eventual qtloops) bootstrapping
|
# `.ui._exec` which is the (eventual qtloops) bootstrapping
|
||||||
# with guest mode.
|
# 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:
|
try:
|
||||||
yield Registry.addrs
|
yield Registry.addrs
|
||||||
|
|
@ -149,7 +175,7 @@ async def find_service(
|
||||||
| None
|
| None
|
||||||
):
|
):
|
||||||
# try:
|
# try:
|
||||||
reg_addrs: list[tuple[str, int]]
|
reg_addrs: list[tuple[str, int|str]]
|
||||||
async with open_registry(
|
async with open_registry(
|
||||||
addrs=(
|
addrs=(
|
||||||
registry_addrs
|
registry_addrs
|
||||||
|
|
@ -172,15 +198,13 @@ async def find_service(
|
||||||
only_first=first_only, # if set only returns single ref
|
only_first=first_only, # if set only returns single ref
|
||||||
) as maybe_portals:
|
) as maybe_portals:
|
||||||
if not maybe_portals:
|
if not maybe_portals:
|
||||||
# log.info(
|
log.info(
|
||||||
print(
|
|
||||||
f'Could NOT find service {service_name!r} -> {maybe_portals!r}'
|
f'Could NOT find service {service_name!r} -> {maybe_portals!r}'
|
||||||
)
|
)
|
||||||
yield None
|
yield None
|
||||||
return
|
return
|
||||||
|
|
||||||
# log.info(
|
log.info(
|
||||||
print(
|
|
||||||
f'Found service {service_name!r} -> {maybe_portals}'
|
f'Found service {service_name!r} -> {maybe_portals}'
|
||||||
)
|
)
|
||||||
yield maybe_portals
|
yield maybe_portals
|
||||||
|
|
@ -195,7 +219,6 @@ async def find_service(
|
||||||
|
|
||||||
async def check_for_service(
|
async def check_for_service(
|
||||||
service_name: str,
|
service_name: str,
|
||||||
|
|
||||||
) -> None|tuple[str, int]:
|
) -> None|tuple[str, int]:
|
||||||
'''
|
'''
|
||||||
Service daemon "liveness" predicate.
|
Service daemon "liveness" predicate.
|
||||||
|
|
|
||||||
|
|
@ -14,20 +14,12 @@
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
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'
|
subsys: str = 'piker.service'
|
||||||
|
|
||||||
log = get_logger(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
|
||||||
get_console_log = partial(
|
# `level=` value? seems too early in the runtime to be injected
|
||||||
get_console_log,
|
# right?
|
||||||
name=subsys,
|
|
||||||
)
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
from contextlib import asynccontextmanager as acm
|
from contextlib import asynccontextmanager as acm
|
||||||
|
from pprint import pformat
|
||||||
from typing import (
|
from typing import (
|
||||||
Any,
|
Any,
|
||||||
TYPE_CHECKING,
|
TYPE_CHECKING,
|
||||||
|
|
@ -26,12 +27,17 @@ import asks
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
import docker
|
import docker
|
||||||
from ._ahab import DockerContainer
|
from ._ahab import DockerContainer
|
||||||
|
from . import (
|
||||||
from ._util import log # sub-sys logger
|
Services,
|
||||||
from ._util import (
|
|
||||||
get_console_log,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from piker.log import (
|
||||||
|
get_console_log,
|
||||||
|
get_logger,
|
||||||
|
)
|
||||||
|
|
||||||
|
log = get_logger(name=__name__)
|
||||||
|
|
||||||
|
|
||||||
# container level config
|
# container level config
|
||||||
_config = {
|
_config = {
|
||||||
|
|
@ -67,7 +73,10 @@ def start_elasticsearch(
|
||||||
elastic
|
elastic
|
||||||
|
|
||||||
'''
|
'''
|
||||||
get_console_log('info', name=__name__)
|
get_console_log(
|
||||||
|
level='info',
|
||||||
|
name=__name__,
|
||||||
|
)
|
||||||
|
|
||||||
dcntr: DockerContainer = client.containers.run(
|
dcntr: DockerContainer = client.containers.run(
|
||||||
'piker:elastic',
|
'piker:elastic',
|
||||||
|
|
|
||||||
|
|
@ -52,17 +52,18 @@ import pendulum
|
||||||
# TODO: import this for specific error set expected by mkts client
|
# TODO: import this for specific error set expected by mkts client
|
||||||
# import purerpc
|
# import purerpc
|
||||||
|
|
||||||
from ..data.feed import maybe_open_feed
|
from piker.data.feed import maybe_open_feed
|
||||||
from . import Services
|
from . import Services
|
||||||
from ._util import (
|
from piker.log import (
|
||||||
log, # sub-sys logger
|
|
||||||
get_console_log,
|
get_console_log,
|
||||||
|
get_logger,
|
||||||
)
|
)
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
import docker
|
import docker
|
||||||
from ._ahab import DockerContainer
|
from ._ahab import DockerContainer
|
||||||
|
|
||||||
|
log = get_logger(name=__name__)
|
||||||
|
|
||||||
|
|
||||||
# ahabd-supervisor and container level config
|
# ahabd-supervisor and container level config
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue