예제 #1
0
    def run(cls, role, console, **kwargs):
        sys.stderr = open(os.devnull, "w")
        cls.logger = logging.getLogger("gfl")
        with Daemonizer() as (is_setup, daemonizer):
            main_pid = None
            if is_setup:
                main_pid = os.getpid()
            pid_file = PathUtils.join(GflConf.home_dir, "proc.lock")
            stdout_file = PathUtils.join(GflConf.logs_dir, "console_out")
            stderr_file = PathUtils.join(GflConf.logs_dir, "console_err")
            is_parent = daemonizer(pid_file,
                                   stdout_goto=stdout_file,
                                   stderr_goto=stderr_file)
            if is_parent:
                if console and main_pid == os.getpid():
                    Shell.startup()

        GflNode.load_node()

        if GflConf.get_property("net.mode") == "standalone":
            client_number = GflConf.get_property(
                "net.standalone.client_number")
            for _ in range(len(GflNode.standalone_nodes), client_number):
                GflNode.add_standalone_node()

            ManagerHolder.default_manager = NodeManager(
                node=GflNode.default_node, role="server")

            for i in range(client_number):
                client_manager = NodeManager(node=GflNode.standalone_nodes[i],
                                             role="client")
                ManagerHolder.standalone_managers.append(client_manager)
        else:
            ManagerHolder.default_manager = NodeManager(
                node=GflNode.default_node, role=role)

        # cls.__startup_node_managers()
        HttpListener.start()

        while HttpListener.is_alive():
            time.sleep(2)
예제 #2
0
    def setUp(self) -> None:
        # GflNode.init_node()
        GflNode.load_node()
        node_server = GflNode.standalone_nodes[0]
        node_client1 = GflNode.standalone_nodes[1]
        node_client2 = GflNode.standalone_nodes[2]
        self.node_manager_server = NodeManager(node=node_server, role="server")
        self.node_manager_client1 = NodeManager(node=node_client1, role="client")
        self.node_manager_client2 = NodeManager(node=node_client2, role="client")
        # 创建job
        self.job = generate_job()

        # 创建job对应的拓扑
        topology_config = TopologyConfig()
        topology_config.with_train_node_num(2)
        topology_config.with_server_nodes([node_server.address])
        topology_config.with_client_nodes([node_client1.address, node_client2.address])
        topology_config.with_index2node([node_server.address, node_client1.address, node_client2.address])
        temp_topology_manager = CentralizedTopologyManager(topology_config)
        temp_topology_manager.generate_topology()

        # 保存job对应的拓扑
        save_topology_manager(job_id=self.job.job_id, topology_manager=temp_topology_manager)
예제 #3
0
import os

work_dir = os.path.dirname(os.path.dirname(__file__))
os.chdir(work_dir)

from gfl.conf import GflConf
from gfl.core.manager.node import GflNode
GflConf.home_dir = "data"
GflNode.load_node()