from xmlrpc.server import SimpleXMLRPCServer from xmlrpc.server import SimpleXMLRPCRequestHandler from loggerModule import Logger from whale_new_rpc import WhaleTranslator import logging # Logger 설정 logger = Logger(log_file="rpc_server.log", logger_name="RPCServer") class TranslatorService: def __init__(self): self.translator = WhaleTranslator(logger) self.translator.start_whale_browser() def translate(self, url, save_path=None): """이미지 URL을 번역하고 저장된 파일 경로를 반환.""" try: logger.log(f"번역 요청 수신: URL={url}, Path={save_path}") result = self.translator.translate_image(url, path=save_path) if result: logger.log(f"번역 성공: Path={save_path}") return save_path else: logger.log("번역 실패", level=logging.WARNING) return None except Exception as e: logger.log(f"번역 처리 중 오류 발생: {e}", level=logging.ERROR, exc_info=True) return None def shutdown(self): """RPC 서버 종료.""" self.translator.close_whale_window() return "서버 종료 완료" def start_rpc_server(port): """RPC 서버를 시작하는 함수.""" class RequestHandler(SimpleXMLRPCRequestHandler): rpc_paths = ('/RPC2',) with SimpleXMLRPCServer(("localhost", port), requestHandler=RequestHandler, allow_none=True) as server: server.register_introspection_functions() service = TranslatorService() server.register_instance(service) logger.log(f"RPC 서버가 시작되었습니다. 포트: {port}") try: server.serve_forever() except Exception as e: logger.log(f"서버 실행 중 오류 발생: {e}", level=logging.ERROR, exc_info=True)