50 lines
1.9 KiB
Python
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)
|