반응형
파이썬, FastAPI, .env 환경변수 설정 정보 가져오기
글. 수알치 오상문
파이썬에서는 실제 환경변수 뿐만 아니라 환경변수를 파일로 저장하고 그 값을 환경변수처럼 사용할 수 있습니다.
먼저, python-dotenv 패키지를 설치합니다.
pip install python-dotenv
".env"라는 텍스트 파일을 생성하고 아래처럼 환경변수로 사용할 내용을 작성하여 저장합니다.
API_KEY=dlkawkdfsdhfkjsd
MY_ID=user
MY_PW=1234
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/app
일반 파이썬 코드에서도 사용 가능하지만, 여기서는 FastAPI에서 해당 환경변수 값을 읽어와서 돌려주는 API 예제를 다룹니다. 당연하지만 FastAPI 설치되어 있어야 합니다. ( pip install fastapi[all] )
from fastapi import FastAPI
import os
from dotenv import dotenv_values, load_dotenv
load_dotenv() # .env 파일 로드
app = FastAPI()
# 방법 1
API_KEY = os.getenv("API_KEY")
MY_ID = os.getenv("MY_ID")
MY_PW = os.getenv("MY_PW")
DOMAIN = os.getenv("DOMAIN")
ADMIN_EMAIL = os.getenv("ADMIN_EMAIL")
ROOT_URL = os.getenv("ROOT_URL")
# 방법 2
config = dotenv_values(".env")
API_KEY2 = config.get("API_KEY")
MY_ID2 = config.get("MY_ID")
MY_PW2 = config.get("MY_PW")
DOMAIN2 = config.get("DOMAIN")
ADMIN_EMAIL2 = config.get("ADMIN_EMAIL")
ROOT_URL2 = config.get("ROOT_URL")
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/env")
async def env():
return {f"API_KEY: {API_KEY}",
f"MY_ID: {MY_ID}",
f"MY_PW: {MY_PW}",
f"DOMAIN: {DOMAIN}",
f"ADMIN_EMAILD: {ADMIN_EMAIL}",
f"ROOT_URL: {ROOT_URL}", }
@app.get("/env2")
async def env2():
return {f"API_KEY: {API_KEY2}",
f"MY_ID: {MY_ID2}",
f"MY_PW: {MY_PW2}",
f"DOMAIN: {DOMAIN2}",
f"ADMIN_EMAILD: {ADMIN_EMAIL2}",
f"ROOT_URL: {ROOT_URL2}", }
if __name__ == "__main__":
print("RUN Type 1: uvicorn main:app") # 127.0.0.1:8000
print("RUN Type 2: uvicorn main:app --host 127.0.0.1 --port 80 --reload") # 127.0.0.1:80
print("RUN Type 3: uvicorn main:app --host 127.0.0.1 --port 80") # 127.0.0.1:80
print("RUN Type 4: [Windows] python -m uvicorn main:app --reload --host 0.0.0.0 --port 80")
print("RUN Type 5: [Linux &] python3 -m uvicorn main:app --reload --host 0.0.0.0 --port 80")
콘솔(cmd) 화면에서 실행합니다.
uvicorn main:app --host 127.0.0.1 --port 80 --reload
[화면] 웹브라우저에 127.0.0.1/env로 호출한 결과
[화면] 웹브라우저에 127.0.0.1/env2로 호출한 결과 (env1과 같은 결과)
반응형
'FastAPI' 카테고리의 다른 글
FastAPI, 동영상 강좌 FastAPI Beyond CRUD (1) | 2024.12.15 |
---|---|
FastAPI, Role-Based Access Control (사용자 역할 기반 접근 제어) (0) | 2024.12.15 |
FastAPI 실행 방법 정리 (0) | 2024.12.12 |
백엔드씬에 긴장감을 주는 FastAPI 프레임워크 (0) | 2024.05.02 |
파이썬 FastAPI + JAVA (Jpype) 예제 (1) | 2023.11.24 |