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
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
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, )
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
def serve(connection_str, test_mode=False): server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) task_servicer = RayletServicer(test_mode=test_mode) data_servicer = DataServicer(task_servicer) _set_server_api(RayServerAPI(task_servicer)) ray_client_pb2_grpc.add_RayletDriverServicer_to_server( task_servicer, server) ray_client_pb2_grpc.add_RayletDataStreamerServicer_to_server( data_servicer, server) server.add_insecure_port(connection_str) server.start() return server
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, )
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()
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
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, )