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()