Mucking with custom `msgspec.Struct` codecs

Syncs with https://github.com/goodboy/tractor/pull/311
which is nowhere near ready and this approach didn't end up being
as straight forward as hoped. We're going to need a top level
`Msg`-boxing type/protocol in `tractor` first...
tractor_typed_msg_hackin
Tyler Goodlet 2022-07-07 16:51:36 -04:00
parent de91c2196d
commit d31c38ef51
1 changed files with 42 additions and 35 deletions

View File

@ -22,13 +22,13 @@ from typing import Optional, Union, Callable, Any
from contextlib import asynccontextmanager as acm from contextlib import asynccontextmanager as acm
from collections import defaultdict from collections import defaultdict
from msgspec import Struct
import tractor import tractor
import trio import trio
from trio_typing import TaskStatus from trio_typing import TaskStatus
from .log import get_logger, get_console_log from .log import get_logger, get_console_log
from .brokers import get_brokermod from .brokers import get_brokermod
from .data.types import Struct
log = get_logger(__name__) log = get_logger(__name__)
@ -204,6 +204,9 @@ async def open_piker_runtime(
assert _services is None assert _services is None
# XXX: this may open a root actor as well # XXX: this may open a root actor as well
with tractor.msg.configure_native_msgs(
[Struct],
):
async with ( async with (
tractor.open_root_actor( tractor.open_root_actor(
@ -260,6 +263,10 @@ async def maybe_open_pikerd(
if loglevel: if loglevel:
get_console_log(loglevel) get_console_log(loglevel)
# XXX: this may open a root actor as well
with tractor.msg.configure_native_msgs(
[Struct],
):
# subtle, we must have the runtime up here or portal lookup will fail # subtle, we must have the runtime up here or portal lookup will fail
async with maybe_open_runtime(loglevel, **kwargs): async with maybe_open_runtime(loglevel, **kwargs):
@ -442,7 +449,7 @@ async def spawn_brokerd(
) )
# non-blocking setup of brokerd service nursery # non-blocking setup of brokerd service nursery
from .data import _setup_persistent_brokerd from .data.feed import _setup_persistent_brokerd
await _services.start_service_task( await _services.start_service_task(
dname, dname,