diff --git a/skynet/dgpu/__init__.py b/skynet/dgpu/__init__.py old mode 100644 new mode 100755 index 173dc32..aaf84f7 --- a/skynet/dgpu/__init__.py +++ b/skynet/dgpu/__init__.py @@ -4,27 +4,36 @@ import trio from hypercorn.config import Config from hypercorn.trio import serve +from quart_trio import QuartTrio as Quart from skynet.dgpu.compute import SkynetMM from skynet.dgpu.daemon import SkynetDGPUDaemon from skynet.dgpu.network import SkynetGPUConnector -async def open_dgpu_node(config: dict): +async def open_dgpu_node(config: dict) -> None: + ''' + Open a top level "GPU mgmt daemon", keep the + `SkynetDGPUDaemon._snap: dict[str, list|dict]` table and *maybe* + serve a `hypercorn` web API. + + ''' conn = SkynetGPUConnector(config) mm = SkynetMM(config) daemon = SkynetDGPUDaemon(mm, conn, config) - api = None + api: Quart|None = None if 'api_bind' in config: api_conf = Config() api_conf.bind = [config['api_bind']] - api = await daemon.generate_api() + api: Quart = await daemon.generate_api() - async with trio.open_nursery() as n: - n.start_soon(daemon.snap_updater_task) + tn: trio.Nursery + async with trio.open_nursery() as tn: + tn.start_soon(daemon.snap_updater_task) if api: - n.start_soon(serve, api, api_conf) + tn.start_soon(serve, api, api_conf) + # block until cancelled await daemon.serve_forever()