AutoPercenty3/test/rpc/rpc_server.py

50 lines
1.9 KiB
Python

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)