Spaces:
Sleeping
Sleeping
File size: 3,302 Bytes
5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb c506a3f 87a0ffb 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e ea3086a df37f6e 9239ad2 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb df37f6e 5564ecb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
import os
from dotenv import load_dotenv
from functools import lru_cache
from typing import Any, Literal
from pydantic import model_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
from core.path_conf import BASE_PATH
load_dotenv()
class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file=f"{BASE_PATH}/.env",
env_file_encoding="utf-8",
extra="ignore",
case_sensitive=True,
)
ENVIRONMENT: Literal["dev", "pro"]
API_BASE_URL: str
API_BASE_URL_VATO: str
API_BASE_URL_ACCESS_TOKEN: str
# DATABASE_TYPE: Literal['mysql', 'postgresql']
# DATABASE_HOST: str
# DATABASE_PORT: int
# DATABASE_USER: str
# DATABASE_PASSWORD: str
# MODEl NER
NER_MODEL_DIR: str = "app/ner/models/ner"
TASK_NAME: str = "token-classification"
ACCELERATOR: str = "ort"
DEVICE: str = "cpu"
TRUNCATE: bool = True
MAX_LENGTH: int = 512
# FastAPI
FASTAPI_API_V1_PATH: str = "/api/v1"
FASTAPI_TITLE: str = "FastAPI"
FASTAPI_VERSION: str = "0.0.1"
FASTAPI_DESCRIPTION: str = "FastAPI"
FASTAPI_DOCS_URL: str = "/docs"
FASTAPI_REDOC_URL: str = "/redoc"
FASTAPI_OPENAPI_URL: str | None = "/openapi"
FASTAPI_STATIC_FILES: bool = True
DATABASE_ECHO: bool = False
DATABASE_POOL_ECHO: bool = False
DATABASE_SCHEMA: str = "fba"
DATABASE_CHARSET: str = "utf8mb4"
CORS_ALLOWED_ORIGINS: list[str] = [
"http://127.0.0.1:8000",
"http://localhost:5173",
]
CORS_EXPOSE_HEADERS: list[str] = [
"X-Request-ID",
]
MIDDLEWARE_CORS: bool = True
MIDDLEWARE_ACCESS: bool = True
DATETIME_TIMEZONE: str = "Asia/Ho_Chi_Minh"
DATETIME_FORMAT: str = "%Y-%m-%d %H:%M:%S"
UPLOAD_READ_SIZE: int = 1024
UPLOAD_IMAGE_EXT_INCLUDE: list[str] = ["jpg", "jpeg", "png", "gif", "webp"]
UPLOAD_IMAGE_SIZE_MAX: int = 5 * 1024 * 1024 # 5 MB
UPLOAD_VIDEO_EXT_INCLUDE: list[str] = ["mp4", "mov", "avi", "flv"]
UPLOAD_VIDEO_SIZE_MAX: int = 20 * 1024 * 1024 # 20 MB
TRACE_ID_REQUEST_HEADER_KEY: str = "X-Request-ID"
# 日志
LOG_CID_DEFAULT_VALUE: str = "-"
LOG_CID_UUID_LENGTH: int = 32 # 日志 correlation_id 长度,必须小于等于 32
LOG_STD_LEVEL: str = "INFO"
LOG_ACCESS_FILE_LEVEL: str = "INFO"
LOG_ERROR_FILE_LEVEL: str = "ERROR"
LOG_STD_FORMAT: str = (
"<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</> | <lvl>{level: <8}</> | "
"<cyan> {correlation_id} </> | <lvl>{message}</>"
)
LOG_FILE_FORMAT: str = (
"<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</> | <lvl>{level: <8}</> | "
"<cyan> {correlation_id} </> | <lvl>{message}</>"
)
LOG_ACCESS_FILENAME: str = "fba_access.log"
LOG_ERROR_FILENAME: str = "fba_error.log"
OPERA_LOG_PATH_EXCLUDE: list[str] = [
"/favicon.ico",
"/docs",
"/redoc",
"/openapi",
]
@model_validator(mode="before")
@classmethod
def check_env(cls, values: Any) -> Any:
if values.get("ENVIRONMENT") == "pro":
values["FASTAPI_OPENAPI_URL"] = None
values["FASTAPI_STATIC_FILES"] = False
return values
@lru_cache
def get_settings() -> Settings:
return Settings()
settings = get_settings()
|