def wait(self, object_refs: List[ClientObjectRef], *, num_returns: int = 1, timeout: float = None, fetch_local: bool = True ) -> Tuple[List[ClientObjectRef], List[ClientObjectRef]]: if not isinstance(object_refs, list): raise TypeError("wait() expected a list of ClientObjectRef, " f"got {type(object_refs)}") for ref in object_refs: if not isinstance(ref, ClientObjectRef): raise TypeError("wait() expected a list of ClientObjectRef, " f"got list containing {type(ref)}") data = { "object_ids": [object_ref.id for object_ref in object_refs], "num_returns": num_returns, "timeout": timeout if (timeout is not None) else -1, "client_id": self._client_id, } req = ray_client_pb2.WaitRequest(**data) resp = self.server.WaitObject(req, metadata=self.metadata) if not resp.valid: # TODO(ameer): improve error/exceptions messages. raise Exception("Client Wait request failed. Reference invalid?") client_ready_object_ids = [ ClientObjectRef(ref) for ref in resp.ready_object_ids ] client_remaining_object_ids = [ ClientObjectRef(ref) for ref in resp.remaining_object_ids ] return (client_ready_object_ids, client_remaining_object_ids)
def wait( self, object_refs: List[ClientObjectRef], *, num_returns: int = 1, timeout: float = None ) -> (List[ClientObjectRef], List[ClientObjectRef]): assert isinstance(object_refs, list) for ref in object_refs: assert isinstance(ref, ClientObjectRef) data = { "object_refs": [cloudpickle.dumps(object_ref) for object_ref in object_refs], "num_returns": num_returns, "timeout": timeout if timeout else -1 } req = ray_client_pb2.WaitRequest(**data) resp = self.server.WaitObject(req) if not resp.valid: # TODO(ameer): improve error/exceptions messages. raise Exception("Client Wait request failed. Reference invalid?") client_ready_object_ids = [ ClientObjectRef(id) for id in resp.ready_object_ids ] client_remaining_object_ids = [ ClientObjectRef(id) for id in resp.remaining_object_ids ] return (client_ready_object_ids, client_remaining_object_ids)