test_py_server.py 2.4 KB
Newer Older
B
barrierye 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# 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.
# pylint: disable=doc-string-missing

B
barrierye 已提交
16 17 18
from paddle_serving_server.pyserver import Op
from paddle_serving_server.pyserver import Channel
from paddle_serving_server.pyserver import PyServer
B
barrierye 已提交
19
import numpy as np
B
barrierye 已提交
20
import logging
B
barrierye 已提交
21

B
barrierye 已提交
22 23 24
logging.basicConfig(
    format='%(asctime)s %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
    datefmt='%Y-%m-%d %H:%M',
25
    #level=logging.DEBUG)
B
barrierye 已提交
26
    level=logging.INFO)
B
barrierye 已提交
27

B
barrierye 已提交
28 29 30

class CombineOp(Op):
    def preprocess(self, input_data):
31
        combined_prediction = 0
32 33
        for op_name, channeldata in input_data.items():
            data = channeldata.parse()
34 35
            logging.info("{}: {}".format(op_name, data["prediction"]))
            combined_prediction += data["prediction"]
B
barrierye 已提交
36
        data = {"prediction": combined_prediction / 2}
B
barrierye 已提交
37 38
        return data

B
barrierye 已提交
39

B
fix bug  
barrierye 已提交
40
read_op = Op(name="read", inputs=None)
41 42 43 44 45 46 47 48 49
bow_op = Op(name="bow",
            inputs=[read_op],
            server_model="imdb_bow_model",
            server_port="9393",
            device="cpu",
            client_config="imdb_bow_client_conf/serving_client_conf.prototxt",
            server_name="127.0.0.1:9393",
            fetch_names=["prediction"],
            concurrency=1,
B
barrierye 已提交
50
            timeout=0.1,
51 52 53 54 55 56 57 58 59 60 61 62
            retry=2)
cnn_op = Op(name="cnn",
            inputs=[read_op],
            server_model="imdb_cnn_model",
            server_port="9292",
            device="cpu",
            client_config="imdb_cnn_client_conf/serving_client_conf.prototxt",
            server_name="127.0.0.1:9292",
            fetch_names=["prediction"],
            concurrency=1,
            timeout=-1,
            retry=1)
B
barrierye 已提交
63
combine_op = CombineOp(
64
    name="combine", inputs=[bow_op, cnn_op], concurrency=1, timeout=-1, retry=1)
B
barrierye 已提交
65

B
bug fix  
barrierye 已提交
66
pyserver = PyServer(profile=False, retry=1)
67
pyserver.add_ops([read_op, bow_op, cnn_op, combine_op])
B
barrierye 已提交
68
pyserver.prepare_server(port=8080, worker_num=2)
B
barrierye 已提交
69
pyserver.run_server()