def SetParams(self, request, context): assert len(self._params) != 0 assert request.end - request.begin == len(request.thetas) # print("Server::SetParams update {} paramters".format(len(request.thetas))) for i in range(request.begin, request.end): self._params[i] = request.thetas[i - request.begin] return parameters_pb2.StateMessage(status='OK')
def SetParamsLocation(self, request, context): for params_location in request.params_location_list: self._param_location_dict[(params_location.ip, params_location.port)] = ( params_location.begin, params_location.end) self._grpc_call[(params_location.ip, params_location.port)] = util.GrpcCallServer( params_location.ip, params_location.port) print(self._param_location_dict) return parameters_pb2.StateMessage(status='OK')
def AddWorker(self, request, context): ip, port = request.ip, request.port if self._running: self._worker_list[(ip, port)] = 'READY' ''' set_range_thread = threading.Thread(target=self.SetRange()) set_range_thread.start() self._worker_list[(ip, port)] = 'START' # call start worker util.StartWork(ip, port) ''' else: self._worker_list[(ip, port)] = 'READY' return parameters_pb2.StateMessage(status='OK')
def FinishJob(self, request, context): ip, port = request.ip, request.port self._worker_list[(ip, port)] = 'FINISHED' print("FinishJob::", self._worker_list) self._running = False if 'START' not in self._worker_list.values(): # call server get params temp_res = [] for ip, port in self._params_server_map: grpc_call = util.GrpcCallServer(ip, port) params = grpc_call.GetParams() begin = self._params_server_map[(ip, port)][0] temp_res.append((params, begin)) temp_res = [(param_feature.result().params, begin) for param_feature, begin in temp_res] temp_res = sorted(temp_res, key=lambda x: int(x[1])) final_res = [] for temp in temp_res: final_res.extend(temp[0]) self._final_params = final_res return parameters_pb2.StateMessage(status='OK')
def StartWork(self, request, context): self._begin_cal = True print(self._data_begin, self._data_end, self._param_begin, self._param_end, self._param_location_dict, self._params, self._begin_cal) return parameters_pb2.StateMessage(status='OK')
def SetParamsRange(self, request, context): self._param_begin = request.begin self._param_end = request.end print(self._param_begin, self._param_end) return parameters_pb2.StateMessage(status='OK')
def AddServer(self, request, context): ip, port = request.ip, request.port self._server_list[(ip, port)] = len(self._server_list) return parameters_pb2.StateMessage(status='OK')
def GetParams(self): response_future = self.stub.GetParams.future( parameters_pb2.StateMessage(status='OK')) return response_future
def StartWork(ip, port): channel = grpc.insecure_channel('{}:{}'.format(ip, port)) stub = parameters_pb2_grpc.WorkerStub(channel) stub.StartWork(parameters_pb2.StateMessage(status='OK'))
def InitParams(self, request, context): self._params = request.params # print("InitParams::", self._params) return parameters_pb2.StateMessage(status='OK')