extractFileServer.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. # coding:utf-8
  2. from proto import fileText_pb2
  3. from servicerd.service import ServiceManage
  4. from proto import fileText_pb2_grpc
  5. from concurrent import futures
  6. from loguru import logger
  7. from app import FileApps
  8. import grpc
  9. import argparse
  10. import time
  11. import json
  12. import file_processing
  13. logger.add('./logs/runtime_{time}.log', rotation='00:00')
  14. parser = argparse.ArgumentParser()
  15. parser.add_argument('-host', '--serve_host', type=str, default="192.168.3.13", help='提供服务的主机地址')
  16. # parser.add_argument('-host', '--serve_host', type=str, default="192.168.21.183", help='提供服务的主机地址')
  17. parser.add_argument('-port', '--serve_port', type=int, default=11103, help='提供>服务的主机端口')
  18. parser.add_argument('-chost', '--consul_serve_host', type=str, default='192.168.3.12', help='consul主机地址')
  19. parser.add_argument('-cport', '--consul_serve_port', type=int, default=10021, help='consul主机端口')
  20. args = parser.parse_args()
  21. _ONE_DAY_IN_SECONDS = 60 * 60 * 24
  22. _SERVICE_NAME = 'file_service'
  23. _HOST = args.serve_host
  24. _PORT = args.serve_port
  25. RD_SERVER = "{}:{}".format(args.consul_serve_host, args.consul_serve_port)
  26. WORKERS = 1
  27. class FileExtractServices(fileText_pb2_grpc.FileExtractServicer):
  28. def FileExtract(self, request, context):
  29. # TODO 调业务
  30. try:
  31. response_result = []
  32. try:
  33. other = request.other
  34. other_json = json.loads(other)
  35. except:
  36. other_json = {}
  37. file_processing.file_picture.OcrType = "tr" if other_json.get("ocr_type", "") == "tr" else "common"
  38. for file in request.message:
  39. request_attr = {"file_name": file.fileName,
  40. "file_url": file.fileUrl,
  41. "file_bytes": file.fileBytes,
  42. "file_type": file.fileType,
  43. "return_type": file.returnType,
  44. "extract_type": file.extractType,
  45. }
  46. file_factory = FileApps(request_attr)
  47. parse_result = file_factory.start()
  48. response_result.extend(parse_result)
  49. return fileText_pb2.FileResponse(result=response_result, other=request.other)
  50. except Exception as e:
  51. print(e)
  52. return fileText_pb2.FileResponse(result=[])
  53. def start_server(destory_fn: any):
  54. """
  55. 启动服务
  56. :param destory_fn:
  57. :return:
  58. """
  59. server = grpc.server(futures.ThreadPoolExecutor(max_workers=WORKERS))
  60. fileText_pb2_grpc.add_FileExtractServicer_to_server(FileExtractServices(), server)
  61. server.add_insecure_port('[::]:%d' % (_PORT))
  62. server.start()
  63. try:
  64. while True:
  65. time.sleep(1)
  66. except KeyboardInterrupt:
  67. destory_fn()
  68. server.stop(0)
  69. if __name__ == '__main__':
  70. sm = ServiceManage(rd_server=RD_SERVER,
  71. name=_SERVICE_NAME,
  72. local_ip=_HOST,
  73. local_port=_PORT,
  74. workers=WORKERS,
  75. balance_type=2)
  76. start_server(sm.destory)