# coding:utf-8 from proto import fileText_pb2 from servicerd.service import ServiceManage from proto import fileText_pb2_grpc from concurrent import futures from loguru import logger from app import FileApps import grpc import argparse import time import json import file_processing logger.add('./logs/runtime_{time}.log', rotation='00:00') parser = argparse.ArgumentParser() parser.add_argument('-host', '--serve_host', type=str, default="192.168.3.13", help='提供服务的主机地址') # parser.add_argument('-host', '--serve_host', type=str, default="192.168.21.183", help='提供服务的主机地址') parser.add_argument('-port', '--serve_port', type=int, default=11103, 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 = 'file_service' _HOST = args.serve_host _PORT = args.serve_port RD_SERVER = "{}:{}".format(args.consul_serve_host, args.consul_serve_port) WORKERS = 1 class FileExtractServices(fileText_pb2_grpc.FileExtractServicer): def FileExtract(self, request, context): # TODO 调业务 try: response_result = [] try: other = request.other other_json = json.loads(other) except: other_json = {} file_processing.file_picture.OcrType = "tr" if other_json.get("ocr_type", "") == "tr" else "common" for file in request.message: request_attr = {"file_name": file.fileName, "file_url": file.fileUrl, "file_bytes": file.fileBytes, "file_type": file.fileType, "return_type": file.returnType, "extract_type": file.extractType, } file_factory = FileApps(request_attr) parse_result = file_factory.start() response_result.extend(parse_result) return fileText_pb2.FileResponse(result=response_result, other=request.other) except Exception as e: print(e) return fileText_pb2.FileResponse(result=[]) def start_server(destory_fn: any): """ 启动服务 :param destory_fn: :return: """ server = grpc.server(futures.ThreadPoolExecutor(max_workers=WORKERS)) fileText_pb2_grpc.add_FileExtractServicer_to_server(FileExtractServices(), 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)