forked from goodboy/tractor
Use "sclang"-style syntax in `to_asyncio` task logging
Just like we've started doing throughout the rest of the actor runtime for reporting (and where "sclang" = "structured conc (s)lang", our little supervision-focused operations syntax i've been playing with in log msg content). Further tweaks: - report the `trio_done_fute` alongside the `main_outcome` value. - add a todo list for supporting `greenback` for pause points.aio_abandons
parent
8363317e11
commit
f7469442e3
|
@ -276,7 +276,10 @@ def _run_asyncio_task(
|
||||||
chan._aio_task: asyncio.Task = task
|
chan._aio_task: asyncio.Task = task
|
||||||
|
|
||||||
# XXX TODO XXX get this actually workin.. XD
|
# XXX TODO XXX get this actually workin.. XD
|
||||||
# maybe setup `greenback` for `asyncio`-side task REPLing
|
# -[ ] we need logic to setup `greenback` for `asyncio`-side task
|
||||||
|
# REPLing.. which should normally be nearly the same as for
|
||||||
|
# `trio`?
|
||||||
|
# -[ ] add to a new `.devx._greenback.maybe_init_for_asyncio()`?
|
||||||
if (
|
if (
|
||||||
debug_mode()
|
debug_mode()
|
||||||
and
|
and
|
||||||
|
@ -305,15 +308,22 @@ def _run_asyncio_task(
|
||||||
|
|
||||||
msg: str = (
|
msg: str = (
|
||||||
'Infected `asyncio` task {etype_str}\n'
|
'Infected `asyncio` task {etype_str}\n'
|
||||||
f'|_{task}\n'
|
|
||||||
)
|
)
|
||||||
if isinstance(terr, CancelledError):
|
if isinstance(terr, CancelledError):
|
||||||
|
msg += (
|
||||||
|
f'c)>\n'
|
||||||
|
f' |_{task}\n'
|
||||||
|
)
|
||||||
log.cancel(
|
log.cancel(
|
||||||
msg.format(etype_str='cancelled')
|
msg.format(etype_str='cancelled')
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
msg += (
|
||||||
|
f'x)>\n'
|
||||||
|
f' |_{task}\n'
|
||||||
|
)
|
||||||
log.exception(
|
log.exception(
|
||||||
msg.format(etype_str='cancelled')
|
msg.format(etype_str='errored')
|
||||||
)
|
)
|
||||||
|
|
||||||
assert type(terr) is type(aio_err), (
|
assert type(terr) is type(aio_err), (
|
||||||
|
@ -619,9 +629,10 @@ def run_as_asyncio_guest(
|
||||||
# )
|
# )
|
||||||
|
|
||||||
def trio_done_callback(main_outcome):
|
def trio_done_callback(main_outcome):
|
||||||
log.info(
|
log.runtime(
|
||||||
f'trio_main finished with\n'
|
f'`trio` guest-run finishing with outcome\n'
|
||||||
f'|_{main_outcome!r}'
|
f'>) {main_outcome}\n'
|
||||||
|
f'|_{trio_done_fute}\n'
|
||||||
)
|
)
|
||||||
|
|
||||||
if isinstance(main_outcome, Error):
|
if isinstance(main_outcome, Error):
|
||||||
|
@ -643,6 +654,12 @@ def run_as_asyncio_guest(
|
||||||
else:
|
else:
|
||||||
trio_done_fute.set_result(main_outcome)
|
trio_done_fute.set_result(main_outcome)
|
||||||
|
|
||||||
|
log.info(
|
||||||
|
f'`trio` guest-run finished with outcome\n'
|
||||||
|
f')>\n'
|
||||||
|
f'|_{trio_done_fute}\n'
|
||||||
|
)
|
||||||
|
|
||||||
startup_msg += (
|
startup_msg += (
|
||||||
f'-> created {trio_done_callback!r}\n'
|
f'-> created {trio_done_callback!r}\n'
|
||||||
f'-> scheduling `trio_main`: {trio_main!r}\n'
|
f'-> scheduling `trio_main`: {trio_main!r}\n'
|
||||||
|
@ -681,7 +698,8 @@ def run_as_asyncio_guest(
|
||||||
# error path in `asyncio`'s runtime..?
|
# error path in `asyncio`'s runtime..?
|
||||||
asyncio.CancelledError,
|
asyncio.CancelledError,
|
||||||
|
|
||||||
) as fute_err:
|
) as _fute_err:
|
||||||
|
fute_err = _fute_err
|
||||||
err_message: str = (
|
err_message: str = (
|
||||||
'main `asyncio` task '
|
'main `asyncio` task '
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue