test_py_server.py 2.5 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

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

B
barrierye 已提交
42

B
fix bug  
barrierye 已提交
43
read_op = Op(name="read", inputs=None)
44 45 46 47 48 49 50 51 52
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 已提交
53
            timeout=0.1,
54 55 56 57 58 59 60 61 62 63 64 65
            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 已提交
66
combine_op = CombineOp(
67
    name="combine", inputs=[bow_op, cnn_op], concurrency=1, timeout=-1, retry=1)
B
barrierye 已提交
68

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