# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from paddle_serving_server.web_service import WebService, Op import logging import numpy as np from numpy import array import sys import base64 _LOGGER = logging.getLogger() np.set_printoptions(threshold=sys.maxsize) class UciOp(Op): def init_op(self): self.separator = "," def preprocess(self, input_dicts, data_id, log_id): """ diff with web_server.py javaclient input type is INDArray, restful request input is list. this function simply reshape input to the Specified shape. """ (_, input_dict), = input_dicts.items() _LOGGER.error("UciOp::preprocess >>> log_id:{}, input:{}".format( log_id, input_dict)) proc_dict = {} x_value = eval(input_dict["x"]) input_dict["x"] = x_value.reshape(1, 13) return input_dict, False, None, "" def postprocess(self, input_dicts, fetch_dict, log_id): _LOGGER.info("UciOp::postprocess >>> log_id:{}, fetch_dict:{}".format( log_id, fetch_dict)) fetch_dict["price"] = str(fetch_dict["price"][0][0]) return fetch_dict, None, "" class UciService(WebService): def get_pipeline_response(self, read_op): uci_op = UciOp(name="uci", input_ops=[read_op]) return uci_op uci_service = UciService(name="uci") uci_service.prepare_pipeline_config("config.yml") uci_service.run_service()