code: def launch_graph_service(
      config, ip_config, server_id, mode, shard_num=1000, port=8245
  ):
      """
  
      Args:
          config: a yaml configure file for distributed graph service
  
          ip_config: list of IP address or a path of IP configuration file
  
              For example, the following TXT shows a 4-machine configuration:
  
                  172.31.50.123:8245
                  172.31.50.124:8245
                  172.31.50.125:8245
                  172.31.50.126:8245
  
          server_id: The graph server rank
  
          shard_num: The total sharding number for the graph.
              Each server is responsible for part of shards.
  
          port: int, port number, default is 8245
  
      Return:
          A DistGraphClient for handling GraphServer
  
      """
      if ip_config is not None:
          ip_addr = helper.load_ip_addr(ip_config)
          ip_addr = ip_addr.split(";")
  
      if mode == "mpi":
          try:
              from mpi4py import MPI
  
              fleet = Dist(MPI)
          except Exception as e:
              log.info(e)
              raise
  
          server_id = fleet.worker_index()
  
          if ip_config is None:
              local_ip_addr = ":".join(
                  [fleet.get_local_ip(), str(port)]
              )
              ip_addr = fleet.allgather(local_ip_addr)
  
      server_num = len(ip_addr)
  
      if server_id == 0:
          args = (config, ip_addr, server_num, server_id, shard_num)
          process = multiprocessing.Process(
              target=start_client, args=args
          )
          process.start()
  
      graph_server = DistGraphServer(
          config,
          shard_num,
          ip_addr,
          server_id=server_id,
          is_block=False,
      )
      while True:
          time.sleep(10)
  
file_path: PGL/pgl/distributed/launch.py
imports: import os
  import argparse
  import threading
  import multiprocessing
  import time
  from paddle.distributed.fleet.base.private_helper_function import wait_server_ready
  from pgl.utils.logger import log
  from pgl.distributed.dist_graph import DistGraphServer, DistGraphClient
  from pgl.distributed import helper
label_desc: Use image node_id 2 for calling a global function with example usage: launch_graph_service(config, ip_config, server_id, mode, shard_num, port) without return types