45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
import argparse
|
|
from modules.image_translate_server import run_server
|
|
from modules.image_processor2 import ImageProcessor
|
|
from modules.loggerModule import Logger1
|
|
from modules.gpt_client import GPTClient
|
|
import sys, os
|
|
|
|
|
|
def get_base_dir():
|
|
"""
|
|
실행 환경에 따라 base_dir을 설정하는 메서드.
|
|
cx_Freeze로 패키징된 경우 실행 파일의 경로, 일반 Python 환경일 경우 __file__을 기준으로 설정.
|
|
"""
|
|
if getattr(sys, 'frozen', False): # 패키징된 경우
|
|
base_dir = os.path.dirname(sys.executable)
|
|
internal_dir = os.path.join(base_dir, 'lib') # lib 디렉토리 포함
|
|
if os.path.exists(internal_dir): # lib 디렉토리가 존재하면 base_dir로 설정
|
|
return internal_dir
|
|
|
|
else: # 일반 Python 실행 환경
|
|
base_dir = os.path.dirname(os.path.abspath(__file__))
|
|
debug_dir = os.path.join(base_dir) # lib 디렉토리 포함
|
|
return debug_dir
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="이미지 번역 FastAPI 서버 실행")
|
|
parser.add_argument('--workers', type=int, default=2, help='최대 동시 워커 수 (2~8)')
|
|
args = parser.parse_args()
|
|
max_workers = max(2, min(args.workers, 8))
|
|
|
|
# 실제 환경에 맞게 객체 생성
|
|
logger = Logger1()
|
|
gpt_client = GPTClient()
|
|
base_dir = get_base_dir()
|
|
font_path = os.path.join(base_dir, "modules", "fonts", "HakgyoansimDunggeunmisoTTFB.ttf")
|
|
print(f"font_path: {font_path}")
|
|
|
|
image_processor = ImageProcessor(logger, gpt_client, base_dir, font_path)
|
|
|
|
port = run_server(image_processor, max_workers)
|
|
print(f"서버가 127.0.0.1:{port} 에서 실행 중입니다.")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|