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