读取配置文件

  • 新增配置文件config.ini
[fastapi_config]
host = 127.0.0.1
debug = True
title = "FastAPI"
description = "FastAPI文档明细描述"
version = v1.0.0

[redis]
ip = 127.0.0.1
port = 6379
password = 123456
  • main.py
#!/usr/bin/evn python
# -*- coding: utf-8 -*-

from fastapi import FastAPI
import configparser

config = configparser.ConfigParser()
config.read('conf.ini', encoding='utf-8')

app = FastAPI(
    debug=bool(config.get('fastapi_config', 'debug')),
    title=config.get('fastapi_config', 'title'),
    description=config.get('fastapi_config', 'description'),
    version=config.get('fastapi_config', 'version'),
)

if __name__ == "__main__":
    import uvicorn
    import os

    app_modeel_name = os.path.basename(__file__).replace(".py", "")
    print(app_modeel_name)
    uvicorn.run(f"{app_modeel_name}:app", host= config.get('fastapi_config', 'host'), reload=True)

  • 新增配置文件.env
DEBUG=true
TITLE="FastAPI"
DESCRIPTION="FastAPI文档明细描述--aa"
VERSION="v1.0.0"
  • main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from typing import Optional
from fastapi import FastAPI
from pydantic_settings import BaseSettings
#from pydantic.tools import lru_cache
from functools import lru_cache
from pydantic import field_validator  # 正确导入 field_validator


class Settings(BaseSettings):
    debug: bool = False
    title: str
    description: str
    version: str

    class Config:
        env_file = ".env"
        env_file_encoding = 'utf-8'

    #@field_validator("version", pre=True)
    @field_validator("version", mode="before")  # 使用 mode="before" 替代 pre=True
    def version_len_check(cls, v: str) -> Optional[str]:
        if v and len(v) == 0:
            return None
        return v

@lru_cache()
def get_settings():
    return Settings()

settings = Settings()
print(settings.debug)
print(settings.title)
print(settings.description)
print(settings.version)

settings = Settings(_env_file='.env', _env_file_encoding='utf-8')
# app = FastAPI(
#     debug=settings.debug,
#     title=settings.title,
#     description=settings.description,
#     version=settings.version,
# )

app = FastAPI(
    debug= get_settings().debug,
    title= get_settings().title,
    description= get_settings().description,
    version= get_settings().version
)


if __name__ == "__main__":
    import uvicorn
    import os
    app_modeel_name = os.path.basename(__file__).replace(".py", "")
    print(app_modeel_name)
    uvicorn.run(f"{app_modeel_name}:app", host='127.0.0.1', reload=True)
posted @ 2026-05-17 07:58  是17阿哥呀  阅读(8)  评论(0)    收藏  举报