Use `nest_from_op()` in some runtime logs for actor-state-repring
parent
78beeebe8f
commit
00583b7671
|
@ -47,6 +47,7 @@ from ._runtime import (
|
|||
from .devx import (
|
||||
debug,
|
||||
_frame_stack,
|
||||
pformat as _pformat,
|
||||
)
|
||||
from . import _spawn
|
||||
from . import _state
|
||||
|
@ -513,10 +514,14 @@ async def open_root_actor(
|
|||
# for an in nurseries:
|
||||
# tempn.start_soon(an.exited.wait)
|
||||
|
||||
op_nested_actor_repr: str = _pformat.nest_from_op(
|
||||
input_op='>) ',
|
||||
tree_str=actor.pformat(),
|
||||
nest_prefix='|_',
|
||||
)
|
||||
logger.info(
|
||||
f'Closing down root actor\n'
|
||||
f'>)\n'
|
||||
f'|_{actor}\n'
|
||||
f'{op_nested_actor_repr}\n'
|
||||
)
|
||||
await actor.cancel(None) # self cancel
|
||||
finally:
|
||||
|
|
|
@ -55,6 +55,7 @@ from typing import (
|
|||
TYPE_CHECKING,
|
||||
)
|
||||
import uuid
|
||||
import textwrap
|
||||
from types import ModuleType
|
||||
import warnings
|
||||
|
||||
|
@ -97,7 +98,10 @@ from ._exceptions import (
|
|||
MsgTypeError,
|
||||
unpack_error,
|
||||
)
|
||||
from .devx import debug
|
||||
from .devx import (
|
||||
debug,
|
||||
pformat as _pformat
|
||||
)
|
||||
from ._discovery import get_registry
|
||||
from ._portal import Portal
|
||||
from . import _state
|
||||
|
@ -339,46 +343,76 @@ class Actor:
|
|||
def pid(self) -> int:
|
||||
return self._aid.pid
|
||||
|
||||
def pformat(self) -> str:
|
||||
ds: str = '='
|
||||
def pformat(
|
||||
self,
|
||||
ds: str = ':',
|
||||
indent: int = 0,
|
||||
) -> str:
|
||||
fields_sect_prefix: str = ' |_'
|
||||
parent_uid: tuple|None = None
|
||||
if rent_chan := self._parent_chan:
|
||||
parent_uid = rent_chan.uid
|
||||
|
||||
peers: list = []
|
||||
server: _server.IPCServer = self.ipc_server
|
||||
ipc_server_sect: str = ''
|
||||
if server:
|
||||
peers: list[tuple] = list(server._peer_connected)
|
||||
|
||||
# create field ln as a key-header indented under
|
||||
# and up to the section's key prefix.
|
||||
# field_ln_header: str = textwrap.indent(
|
||||
# text=f"ipc_server{ds}",
|
||||
# prefix=' '*len(fields_sect_prefix),
|
||||
# )
|
||||
# ^XXX if we were to indent `repr(Server)` to
|
||||
# '<key>: '
|
||||
# _here_^
|
||||
server_repr: str = textwrap.indent(
|
||||
text=self._ipc_server.pformat(),
|
||||
# prefix=' '*len(field_ln_header),
|
||||
prefix=' '*len(fields_sect_prefix),
|
||||
)
|
||||
ipc_server_sect: str = (
|
||||
# f'{field_ln_header}\n'
|
||||
f'{server_repr}'
|
||||
)
|
||||
|
||||
fmtstr: str = (
|
||||
f' |_id: {self.aid!r}\n'
|
||||
# f" aid{ds}{self.aid!r}\n"
|
||||
f" parent{ds}{parent_uid}\n"
|
||||
f'\n'
|
||||
# f'\n'
|
||||
f' |_ipc: {len(peers)!r} connected peers\n'
|
||||
f" peers{ds}{peers!r}\n"
|
||||
f" ipc_server{ds}{self._ipc_server}\n"
|
||||
f'\n'
|
||||
f"{ipc_server_sect}"
|
||||
# f'\n'
|
||||
f' |_rpc: {len(self._rpc_tasks)} tasks\n'
|
||||
f" ctxs{ds}{len(self._contexts)}\n"
|
||||
f'\n'
|
||||
# f'\n'
|
||||
f' |_runtime: ._task{ds}{self._task!r}\n'
|
||||
f' _spawn_method{ds}{self._spawn_method}\n'
|
||||
f' _actoruid2nursery{ds}{self._actoruid2nursery}\n'
|
||||
f' _forkserver_info{ds}{self._forkserver_info}\n'
|
||||
f'\n'
|
||||
# f'\n'
|
||||
f' |_state: "TODO: .repr_state()"\n'
|
||||
f' _cancel_complete{ds}{self._cancel_complete}\n'
|
||||
f' _cancel_called_by_remote{ds}{self._cancel_called_by_remote}\n'
|
||||
f' _cancel_called{ds}{self._cancel_called}\n'
|
||||
)
|
||||
return (
|
||||
_repr: str = (
|
||||
'<Actor(\n'
|
||||
+
|
||||
fmtstr
|
||||
+
|
||||
')>\n'
|
||||
)
|
||||
if indent:
|
||||
_repr: str = textwrap.indent(
|
||||
text=_repr,
|
||||
prefix=' '*indent,
|
||||
)
|
||||
return _repr
|
||||
|
||||
__repr__ = pformat
|
||||
|
||||
|
@ -1654,10 +1688,15 @@ async def async_main(
|
|||
'-> All peer channels are complete\n'
|
||||
)
|
||||
|
||||
op_nested_actor_repr: str = _pformat.nest_from_op(
|
||||
input_op=')> ',
|
||||
tree_str=actor.pformat(),
|
||||
nest_prefix='|_',
|
||||
back_from_op=2,
|
||||
)
|
||||
teardown_report += (
|
||||
'Actor runtime exiting\n'
|
||||
f'>)\n'
|
||||
f'|_{actor}\n'
|
||||
'Actor runtime exited\n'
|
||||
f'{op_nested_actor_repr}\n'
|
||||
)
|
||||
log.info(teardown_report)
|
||||
|
||||
|
|
Loading…
Reference in New Issue