# app/core/config.py
# 현재 컴퓨터의 OS 환경변수(ENV_MODE)를 보고 어떤 설정을 켤지 런타임에 결정합니다.
from pydantic_settings import BaseSettings, SettingsConfigDict
class BaseConfig(BaseSettings):
"""모든 환경이 공유하는 공통 설정실"""
# 💡 [핵심] ENV_MODE 자체를 Pydantic 변수로 등록합니다.
# OS 환경변수에 ENV_MODE가 있으면 가져오고, 없으면 "local"이 기본값이 됩니다.
ENV_MODE: str = "local"
PROJECT_NAME: str = "My FastAPI App"
GOOGLE_SHEET_ID: str = ""
# ⭕ 에러가 났던 secret_key를 대문자로 클래스에 선언해 줍니다!
SECRET_KEY: str = "super-secret-default-key"
# 💡 [핵심 추가] 디버그 모드 스위치를 추가합니다. 기본값은 안전하게 False로 둡니다.
DEBUG_MODE: bool = False
LOG_DIR: str = "logs"
LOG_FILE_NAME: str = "access.log"
class LocalConfig(BaseConfig):
"""내 컴퓨터(로컬)에서만 사용할 설정값"""
DATABASE_URL: str = "sqlite:///./local.db" # 로컬은 가벼운 SQLite 사용
# 내 컴퓨터에서는 .env 파일을 읽도록 지정
model_config = SettingsConfigDict(env_file=".env", extra="ignore", env_file_encoding="utf-8")
class ProdConfig(BaseConfig):
"""🔥 실제 AWS ECS 운영 서버에서 사용할 설정값"""
DATABASE_URL: str = "" # 실제 운영 DB 주소 (AWS가 환경변수로 주입해줄 것임)
# AWS 서버에서는 .env 파일 없이 오직 OS 환경변수만 읽도록 강제
model_config = SettingsConfigDict(env_file=None, extra="ignore", env_file_encoding="utf-8")
# -------------------------------------------------------------
# 👑 [최종 개선] 수동 os.environ을 완전히 걷어낸 진입점 함수
# -------------------------------------------------------------
def get_settings():
# ① 일단 기본 설정 베이스를 0.001초만에 임시 가동합니다.
# 이때 Pydantic이 OS 환경변수를 지가 알아서 긁어와 BaseConfig의 ENV_MODE에 채워 넣습니다!
base = BaseConfig()
# ② 수동 os.environ.get 대신, Pydantic이 안전하게 검증해준 진짜 변수값을 읽어 분기합니다.
if base.ENV_MODE == "prod":
return ProdConfig()
return LocalConfig()
settings = get_settings()
본 공간은 인공지능(AI)이 도출한 방대한 지식을 일목요연하게 큐레이션하여 기록하는 블로그입니다. 기술적 한계로 인해 모든 정보의 완벽한 정확성을 보장하기는 어려우므로, 최종적인 판단과 책임은 독자 본인에게 있음을 정중히 안내해 드립니다.
2026년 7월 21일 화요일
app/config.py
database.py
import os from contextlib import contextmanager # contextmanager 임포트 from typing import Generator from dotenv...
-
bool atob(const char * string) { if (!strcmp(string, "true")) return true; return false; }
-
/// CXXXView.cpp void CXXXView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the ...
-
WxWidgets: http://www.wxwidgets.org/downloads/ MinGW: http://sourceforge.net/projects/mingw/files/ * Microsoft Windows Environment Var...