1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- # coding:utf-8
- '''
- 微服务服务端
- '''
- from proto import exists_expert_pb2
- from servicerd.service import ServiceManage
- from proto import exists_expert_pb2_grpc
- from concurrent import futures
- from loguru import logger
- from predict import extract_expert
- import grpc
- import argparse
- import time
- import json
- logger.add('./logs/runtime_{time}.log', rotation='00:00')
- parser = argparse.ArgumentParser()
- parser.add_argument('-host', '--serve_host', type=str, default="192.168.20.69", help='提供服务的主机地址')
- parser.add_argument('-port', '--serve_port', type=int, default=14001, help='提供>服务的主机端口')
- parser.add_argument('-chost', '--consul_serve_host', type=str, default='192.168.3.12', help='consul主机地址')
- parser.add_argument('-cport', '--consul_serve_port', type=int, default=10021, help='consul主机端口')
- args = parser.parse_args()
- _ONE_DAY_IN_SECONDS = 60 * 60 * 24
- _SERVICE_NAME = 'extract_expert_service'
- _HOST = args.serve_host
- _PORT = args.serve_port
- RD_SERVER = "{}:{}".format(args.consul_serve_host, args.consul_serve_port)
- WORKERS = 10
- class ExtractExpertServices(exists_expert_pb2_grpc.ExistsExpertServicer):
- def extract(self, request, context):
- # TODO 调业务
- try:
- request_params = json.loads(request.contents)
- print(request_params)
- predict_result = extract_expert(request_params)
- result = json.dumps({"result": predict_result, "status": 200})
- return exists_expert_pb2.ExpertResponse(results=result)
- except Exception as e:
- logger.warning(e)
- result = json.dumps({"status": 300})
- return exists_expert_pb2.ExpertResponse(results=result)
- def start_server(destory_fn: any):
- """
- 启动服务
- :param destory_fn:
- :return:
- """
- server = grpc.server(futures.ThreadPoolExecutor(max_workers=WORKERS), options=[
- ('grpc.max_send_message_length', 100 * 1024 * 1024),
- ('grpc.max_receive_message_length', 100 * 1024 * 1024)])
- exists_expert_pb2_grpc.add_ExistsExpertServicer_to_server(ExtractExpertServices(), server)
- server.add_insecure_port('[::]:%d' % (_PORT))
- server.start()
- try:
- while True:
- time.sleep(1)
- except KeyboardInterrupt:
- destory_fn()
- server.stop(0)
- if __name__ == '__main__':
- sm = ServiceManage(rd_server=RD_SERVER,
- name=_SERVICE_NAME,
- local_ip=_HOST,
- local_port=_PORT,
- workers=WORKERS,
- balance_type=2)
- start_server(sm.destory)
|