예제 #1
0
 def mock_connection_response():
     return ray_client_pb2.ConnectionInfoResponse(
         num_clients=1,
         python_version="2.7.12",
         ray_version="",
         ray_commit="",
     )
예제 #2
0
 def mock_connection_response():
     return ray_client_pb2.ConnectionInfoResponse(
         num_clients=1,
         python_version=local_py_version,
         ray_version="",
         ray_commit="",
         protocol_version="2050-01-01",  # from the future
     )
예제 #3
0
 def mock_connection_response():
     return ray_client_pb2.ConnectionInfoResponse(
         num_clients=1,
         python_version="2.7.12",
         ray_version="",
         ray_commit="",
         protocol_version=CURRENT_PROTOCOL_VERSION,
     )
예제 #4
0
 def _build_connection_response(self):
     with self.clients_lock:
         cur_num_clients = self.num_clients
     return ray_client_pb2.ConnectionInfoResponse(
         num_clients=cur_num_clients,
         python_version="{}.{}.{}".format(
             sys.version_info[0], sys.version_info[1], sys.version_info[2]),
         ray_version=ray.__version__,
         ray_commit=ray.__commit__,
         protocol_version=CURRENT_PROTOCOL_VERSION)
예제 #5
0
 def _build_connection_response(self):
     with self._clients_lock:
         cur_num_clients = self._num_clients
     return ray_client_pb2.ConnectionInfoResponse(
         num_clients=cur_num_clients,
         python_version="{}.{}.{}".format(sys.version_info[0],
                                          sys.version_info[1],
                                          sys.version_info[2]),
         ray_version=ray.__version__,
         ray_commit=ray.__commit__)
예제 #6
0
 def Datapath(self, request_iterator, context):
     metadata = {k: v for k, v in context.invocation_metadata()}
     client_id = metadata["client_id"]
     if client_id == "":
         logger.error("Client connecting with no client_id")
         return
     logger.info(f"New data connection from client {client_id}")
     try:
         with self._clients_lock:
             self._num_clients += 1
         for req in request_iterator:
             resp = None
             req_type = req.WhichOneof("type")
             if req_type == "get":
                 get_resp = self.basic_service._get_object(
                     req.get, client_id)
                 resp = ray_client_pb2.DataResponse(get=get_resp)
             elif req_type == "put":
                 put_resp = self.basic_service._put_object(
                     req.put, client_id)
                 resp = ray_client_pb2.DataResponse(put=put_resp)
             elif req_type == "release":
                 released = []
                 for rel_id in req.release.ids:
                     rel = self.basic_service.release(client_id, rel_id)
                     released.append(rel)
                 resp = ray_client_pb2.DataResponse(
                     release=ray_client_pb2.ReleaseResponse(ok=released))
             elif req_type == "connection_info":
                 with self._clients_lock:
                     cur_num_clients = self._num_clients
                 info = ray_client_pb2.ConnectionInfoResponse(
                     num_clients=cur_num_clients,
                     python_version="{}.{}.{}".format(
                         sys.version_info[0], sys.version_info[1],
                         sys.version_info[2]),
                     ray_version=ray.__version__,
                     ray_commit=ray.__commit__)
                 resp = ray_client_pb2.DataResponse(connection_info=info)
             else:
                 raise Exception(f"Unreachable code: Request type "
                                 f"{req_type} not handled in Datapath")
             resp.req_id = req.req_id
             yield resp
     except grpc.RpcError as e:
         logger.debug(f"Closing data channel: {e}")
     finally:
         logger.info(f"Lost data connection from client {client_id}")
         self.basic_service.release_all(client_id)
         with self._clients_lock:
             self._num_clients -= 1