51 lines
1.4 KiB
Python
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()
|