File size: 1,302 Bytes
9c6594c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
"""Backend - Send to internal process.
Manage backend.
"""
import logging
from typing import TYPE_CHECKING, Optional
from wandb.sdk.interface.interface import InterfaceBase
from wandb.sdk.wandb_settings import Settings
if TYPE_CHECKING:
from wandb.sdk.lib import service_connection
logger = logging.getLogger("wandb")
class Backend:
interface: Optional[InterfaceBase]
_settings: Settings
_done: bool
_service: Optional["service_connection.ServiceConnection"]
def __init__(
self,
settings: Settings,
service: Optional["service_connection.ServiceConnection"] = None,
) -> None:
self._done = False
self.interface = None
self._settings = settings
self._service = service
def ensure_launched(self) -> None:
"""Launch backend worker if not running."""
assert self._settings.run_id
assert self._service
self.interface = self._service.make_interface(
stream_id=self._settings.run_id,
)
def server_status(self) -> None:
"""Report server status."""
def cleanup(self) -> None:
# TODO: make _done atomic
if self._done:
return
self._done = True
if self.interface:
self.interface.join()
|