import logging import time from concurrent import futures import grpc from processor.create_xml import CreateXml from processor.processor import Processor from server import process_pb2_grpc class Statistics(process_pb2_grpc.StatisticsServicer): def RunTeamStatistics(self, request, context): return Processor(request.event, request.homeTeamId, request.visitingTeamID, request.names).run_team_statistics() def RunPlayerStatistics(self, request, context): return Processor(request.event, request.homeTeamId, request.visitingTeamID, request.names).run_player_statistics() def RunPassingMatrix(self, request, context): return Processor(request.event, request.homeTeamId, request.visitingTeamID, request.names).run_passing_matrix() def RunPassGraph(self, request, context): return Processor(request.event, request.homeTeamId, request.visitingTeamID, request.names).run_pass_graph() def RunCreateXml(self, request, context): return CreateXml(request.matchId).run_create_xml() def serve(): logger = logging.getLogger() # 启动 rpc 服务 server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) process_pb2_grpc.add_StatisticsServicer_to_server(Statistics(), server) server.add_insecure_port('127.0.0.1:5959') server.start() logger.info('grpc server start on port(s):5959') try: while True: time.sleep(60 * 60 * 24) # one day in seconds except KeyboardInterrupt: server.stop(0) logger.info('grpc server shutdown.') if __name__ == '__main__': logging.basicConfig(level=logging.INFO, format='time="%(asctime)s" level=%(levelname)s message="%(message)s"') serve()