From d54aeaa61ab714e00da7cc603d34f887313be092 Mon Sep 17 00:00:00 2001 From: Zayden Jung Date: Wed, 20 May 2026 02:21:22 +0800 Subject: [PATCH] load dotenv everywhere it's needed; postgresql pool pre ping --- app/db.py | 6 +++++- app/main.py | 2 ++ app/utils/format.py | 3 +++ app/utils/s3.py | 5 +++-- auth/deps.py | 5 ++++- auth/oauth/google.py | 3 +++ auth/tokens.py | 3 +++ 7 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/db.py b/app/db.py index 7c22dd1..a0b84b4 100644 --- a/app/db.py +++ b/app/db.py @@ -18,5 +18,9 @@ elif DATABASE_URL and DATABASE_URL.startswith("postgres+"): if not DATABASE_URL: raise ValueError("DATABASE_URL environment variable is not set or empty.") -engine = create_engine(DATABASE_URL) +engine = create_engine( + DATABASE_URL, + pool_recycle=3600, + pool_pre_ping=True +) SessionLocal = sessionmaker(bind=engine) \ No newline at end of file diff --git a/app/main.py b/app/main.py index c0def1d..0a5ea3e 100644 --- a/app/main.py +++ b/app/main.py @@ -3,6 +3,7 @@ from fastapi import FastAPI, Depends, HTTPException from fastapi.middleware.cors import CORSMiddleware from strawberry import Schema from strawberry.fastapi import GraphQLRouter +from dotenv import load_dotenv from auth import router as auth_router, get_user_by_id, get_current_user @@ -22,6 +23,7 @@ Base.metadata.create_all(bind=engine) app = FastAPI() # 获取环境变量字符串,并转成列表 +load_dotenv() origins_str = os.getenv("CORS_ORIGINS", "http://localhost:3000") origins = [origin.strip() for origin in origins_str.split(",")] diff --git a/app/utils/format.py b/app/utils/format.py index d4f20bf..0cf208f 100644 --- a/app/utils/format.py +++ b/app/utils/format.py @@ -1,4 +1,7 @@ import os +from dotenv import load_dotenv + +load_dotenv() OSS_BASE_URL = os.getenv("OSS_BASE_URL", "").rstrip("/") diff --git a/app/utils/s3.py b/app/utils/s3.py index 29637c2..3d5b86b 100644 --- a/app/utils/s3.py +++ b/app/utils/s3.py @@ -1,8 +1,9 @@ import oss2 import httpx import os -import io -from fastapi import HTTPException +from dotenv import load_dotenv + +load_dotenv() # 加载配置 ACCESS_KEY_ID = os.getenv("S3_ACCESS_KEY_ID") diff --git a/auth/deps.py b/auth/deps.py index c362490..7209d2b 100644 --- a/auth/deps.py +++ b/auth/deps.py @@ -1,11 +1,14 @@ from fastapi import Request, HTTPException import os +from dotenv import load_dotenv + from .tokens import decode_token +load_dotenv() + JWT_SECRET = os.getenv("JWT_SECRET") JWT_ALGORITHM = os.getenv("JWT_ALGORITHM", "HS256") - def get_current_user(request: Request): token = request.cookies.get("access_token") diff --git a/auth/oauth/google.py b/auth/oauth/google.py index ed18a31..1371a04 100644 --- a/auth/oauth/google.py +++ b/auth/oauth/google.py @@ -7,6 +7,7 @@ import os import secrets import json from urllib.parse import quote +from dotenv import load_dotenv from auth.deps import get_current_user from app.db import SessionLocal @@ -16,6 +17,8 @@ from app.utils.format import get_image_url router = APIRouter() +load_dotenv() + GOOGLE_CLIENT_ID = os.getenv("GOOGLE_CLIENT_ID") GOOGLE_CLIENT_SECRET = os.getenv("GOOGLE_CLIENT_SECRET") GOOGLE_REDIRECT_URI = os.getenv("GOOGLE_REDIRECT_URI") diff --git a/auth/tokens.py b/auth/tokens.py index c955d31..97c58ac 100644 --- a/auth/tokens.py +++ b/auth/tokens.py @@ -2,6 +2,9 @@ from datetime import datetime, timedelta, timezone import os import jwt from fastapi import HTTPException, status +from dotenv import load_dotenv + +load_dotenv() JWT_SECRET = os.getenv("JWT_SECRET") JWT_ALGORITHM = os.getenv("JWT_ALGORITHM", "HS256")