Example #1
0
def serve(connection_str, ray_connect_handler=None):
    def default_connect_handler(job_config: JobConfig = None,
                                **ray_init_kwargs: Dict[str, Any]):
        with disable_client_hook():
            if not ray.is_initialized():
                return ray.init(job_config=job_config, **ray_init_kwargs)

    ray_connect_handler = ray_connect_handler or default_connect_handler
    server = grpc.server(
        futures.ThreadPoolExecutor(
            max_workers=CLIENT_SERVER_MAX_THREADS,
            thread_name_prefix="ray_client_server",
        ),
        options=GRPC_OPTIONS,
    )
    task_servicer = RayletServicer(ray_connect_handler)
    data_servicer = DataServicer(task_servicer)
    logs_servicer = LogstreamServicer()
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server(
        data_servicer, server)
    ray_client_pb2_grpc.add_RayletLogStreamerServicer_to_server(
        logs_servicer, server)
    add_port_to_grpc_server(server, connection_str)
    current_handle = ClientServerHandle(
        task_servicer=task_servicer,
        data_servicer=data_servicer,
        logs_servicer=logs_servicer,
        grpc_server=server,
    )
    server.start()
    return current_handle
Example #2
0
def serve(connection_str, ray_connect_handler=None):
    def default_connect_handler(job_config: JobConfig = None):
        with disable_client_hook():
            if not ray.is_initialized():
                return ray.init(job_config=job_config)

    ray_connect_handler = ray_connect_handler or default_connect_handler
    server = grpc.server(
        futures.ThreadPoolExecutor(max_workers=CLIENT_SERVER_MAX_THREADS),
        options=[
            ("grpc.max_send_message_length", GRPC_MAX_MESSAGE_SIZE),
            ("grpc.max_receive_message_length", GRPC_MAX_MESSAGE_SIZE),
        ])
    task_servicer = RayletServicer(ray_connect_handler)
    data_servicer = DataServicer(task_servicer)
    logs_servicer = LogstreamServicer()
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server(
        data_servicer, server)
    ray_client_pb2_grpc.add_RayletLogStreamerServicer_to_server(
        logs_servicer, server)
    server.add_insecure_port(connection_str)
    current_handle = ClientServerHandle(
        task_servicer=task_servicer,
        data_servicer=data_servicer,
        logs_servicer=logs_servicer,
        grpc_server=server,
    )
    server.start()
    return current_handle
Example #3
0
def serve_proxier(connection_str: str,
                  redis_address: str,
                  *,
                  redis_password: Optional[str] = None,
                  session_dir: Optional[str] = None):
    server = grpc.server(
        futures.ThreadPoolExecutor(max_workers=CLIENT_SERVER_MAX_THREADS),
        options=GRPC_OPTIONS)
    proxy_manager = ProxyManager(redis_address,
                                 session_dir=session_dir,
                                 redis_password=redis_password)
    task_servicer = RayletServicerProxy(None, proxy_manager)
    data_servicer = DataServicerProxy(proxy_manager)
    logs_servicer = LogstreamServicerProxy(proxy_manager)
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server(
        data_servicer, server)
    ray_client_pb2_grpc.add_RayletLogStreamerServicer_to_server(
        logs_servicer, server)
    server.add_insecure_port(connection_str)
    server.start()
    return ClientServerHandle(
        task_servicer=task_servicer,
        data_servicer=data_servicer,
        logs_servicer=logs_servicer,
        grpc_server=server,
    )
Example #4
0
File: server.py Project: zjutoe/ray
def serve(connection_str, ray_connect_handler=None):
    def default_connect_handler():
        with disable_client_hook():
            if not ray.is_initialized():
                return ray.init()

    ray_connect_handler = ray_connect_handler or default_connect_handler
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    task_servicer = RayletServicer()
    data_servicer = DataServicer(task_servicer,
                                 ray_connect_handler=ray_connect_handler)
    logs_servicer = LogstreamServicer()
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server(
        data_servicer, server)
    ray_client_pb2_grpc.add_RayletLogStreamerServicer_to_server(
        logs_servicer, server)
    server.add_insecure_port(connection_str)
    current_handle = ClientServerHandle(
        task_servicer=task_servicer,
        data_servicer=data_servicer,
        logs_servicer=logs_servicer,
        grpc_server=server,
    )
    server.start()
    return current_handle
Example #5
0
def serve(connection_str):
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    task_servicer = RayletServicer()
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    server.add_insecure_port(connection_str)
    server.start()
    return server
Example #6
0
def serve(connection_str, test_mode=False):
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    task_servicer = RayletServicer(test_mode=test_mode)
    _set_server_api(RayServerAPI(task_servicer))
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    server.add_insecure_port(connection_str)
    server.start()
    return server
Example #7
0
def serve_proxier(
    connection_str: str,
    address: Optional[str],
    *,
    redis_password: Optional[str] = None,
    session_dir: Optional[str] = None,
    runtime_env_agent_port: int = 0,
):
    # Initialize internal KV to be used to upload and download working_dir
    # before calling ray.init within the RayletServicers.
    # NOTE(edoakes): redis_address and redis_password should only be None in
    # tests.
    if use_gcs_for_bootstrap():
        if address is not None:
            gcs_cli = GcsClient(address=address)
            ray.experimental.internal_kv._initialize_internal_kv(gcs_cli)
    else:
        if address is not None and redis_password is not None:
            gcs_cli = GcsClient.connect_to_gcs_by_redis_address(
                address, redis_password)
            ray.experimental.internal_kv._initialize_internal_kv(gcs_cli)

    server = grpc.server(
        futures.ThreadPoolExecutor(max_workers=CLIENT_SERVER_MAX_THREADS),
        options=GRPC_OPTIONS,
    )
    proxy_manager = ProxyManager(
        address,
        session_dir=session_dir,
        redis_password=redis_password,
        runtime_env_agent_port=runtime_env_agent_port,
    )
    task_servicer = RayletServicerProxy(None, proxy_manager)
    data_servicer = DataServicerProxy(proxy_manager)
    logs_servicer = LogstreamServicerProxy(proxy_manager)
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server(
        data_servicer, server)
    ray_client_pb2_grpc.add_RayletLogStreamerServicer_to_server(
        logs_servicer, server)
    add_port_to_grpc_server(server, connection_str)
    server.start()
    return ClientServerHandle(
        task_servicer=task_servicer,
        data_servicer=data_servicer,
        logs_servicer=logs_servicer,
        grpc_server=server,
    )
Example #8
0
 def __init__(
     self,
     listen_addr: str,
     real_addr,
     on_log_response: Optional[Hook] = None,
     on_data_request: Optional[Hook] = None,
     on_data_response: Optional[Hook] = None,
     on_task_request: Optional[Hook] = None,
     on_task_response: Optional[Hook] = None,
 ):
     """
     Args:
         listen_addr: The address the middleman server will listen on
         real_addr: The address of the real ray server
         on_log_response: Optional hook to inject errors before sending back
             a log response
         on_data_response: Optional hook to inject errors before sending
             back a data response
         on_task_request: Optional hook to inject errors before forwarding
             a raylet driver request
         on_task_response: Optional hook to inject errors before sending
             back a raylet driver response
     """
     self.listen_addr = listen_addr
     self.real_addr = real_addr
     self.server = grpc.server(
         futures.ThreadPoolExecutor(max_workers=CLIENT_SERVER_MAX_THREADS),
         options=GRPC_OPTIONS,
     )
     self.task_servicer = MiddlemanRayletServicer(
         on_response=on_task_response, on_request=on_task_request
     )
     self.data_servicer = MiddlemanDataServicer(
         on_response=on_data_response, on_request=on_data_request
     )
     self.logs_servicer = MiddlemanLogServicer(on_response=on_log_response)
     ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
         self.task_servicer, self.server
     )
     ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server(
         self.data_servicer, self.server
     )
     ray_client_pb2_grpc.add_RayletLogStreamerServicer_to_server(
         self.logs_servicer, self.server
     )
     self.server.add_insecure_port(self.listen_addr)
     self.channel = None
     self.reset_channel()
Example #9
0
def serve(connection_str):
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    task_servicer = RayletServicer()
    data_servicer = DataServicer(task_servicer)
    logs_servicer = LogstreamServicer()
    global _current_servicer
    _current_servicer = task_servicer
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server(
        data_servicer, server)
    ray_client_pb2_grpc.add_RayletLogStreamerServicer_to_server(
        logs_servicer, server)
    server.add_insecure_port(connection_str)
    server.start()
    return server
Example #10
0
def serve_proxier(connection_str: str,
                  redis_address: Optional[str],
                  *,
                  redis_password: Optional[str] = None,
                  session_dir: Optional[str] = None):
    # Initialize internal KV to be used to upload and download working_dir
    # before calling ray.init within the RayletServicers.
    # NOTE(edoakes): redis_address and redis_password should only be None in
    # tests.
    if redis_address is not None and redis_password is not None:
        ip, port = redis_address.split(":")
        gcs_client = connect_to_gcs(ip, int(port), redis_password)
        ray.experimental.internal_kv._initialize_internal_kv(gcs_client)

    server = grpc.server(
        futures.ThreadPoolExecutor(max_workers=CLIENT_SERVER_MAX_THREADS),
        options=GRPC_OPTIONS)
    proxy_manager = ProxyManager(
        redis_address, session_dir=session_dir, redis_password=redis_password)
    task_servicer = RayletServicerProxy(None, proxy_manager)
    data_servicer = DataServicerProxy(proxy_manager)
    logs_servicer = LogstreamServicerProxy(proxy_manager)
    ray_client_pb2_grpc.add_RayletDriverServicer_to_server(
        task_servicer, server)
    ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server(
        data_servicer, server)
    ray_client_pb2_grpc.add_RayletLogStreamerServicer_to_server(
        logs_servicer, server)
    server.add_insecure_port(connection_str)
    server.start()
    return ClientServerHandle(
        task_servicer=task_servicer,
        data_servicer=data_servicer,
        logs_servicer=logs_servicer,
        grpc_server=server,
    )