o2o-castad-scheduler/config.py

51 lines
1.4 KiB
Python

import os
from pathlib import Path
from zoneinfo import ZoneInfo
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
TIMEZONE = ZoneInfo(os.getenv("TIMEZONE", "Asia/Seoul"))
PROJECT_DIR = Path(__file__).resolve().parent
_base_config = SettingsConfigDict(
env_file=PROJECT_DIR / ".env",
env_ignore_empty=True,
extra="ignore",
)
class SchedulerSettings(BaseSettings):
# 백엔드 내부 API 설정
BACKEND_INTERNAL_URL: str = Field(
default="http://castad-app:8000",
description="백엔드 서버 내부 URL (Docker 네트워크)",
)
INTERNAL_SECRET_KEY: str = Field(
default="change-me-internal-secret-key",
description="내부 API 인증 키 (백엔드와 동일해야 함)",
)
# MySQL 설정
MYSQL_HOST: str = Field(default="mysql")
MYSQL_PORT: int = Field(default=3306)
MYSQL_USER: str = Field(default="root")
MYSQL_PASSWORD: str = Field(default="")
MYSQL_DB: str = Field(default="castad_test1")
# 스케줄러 설정
CHECK_INTERVAL_MINUTES: int = Field(
default=10,
description="예약 업로드 체크 주기 (분)",
)
model_config = _base_config
@property
def MYSQL_URL(self) -> str:
return f"mysql+aiomysql://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}@{self.MYSQL_HOST}:{self.MYSQL_PORT}/{self.MYSQL_DB}"
settings = SchedulerSettings()