FastAPI programos konfigūraciją valdo pydantic-settings (BaseSettings) — klasė, kuri skaito konfigūraciją iš aplinkos kintamųjų (ir .env failų) su , išlaikydama paslaptis iš kodo ir užtikrinant, kad konfigūracija yra teisinga paleistime.
FastAPI programos konfigūraciją valdo pydantic-settings (BaseSettings) — klasė, kuri skaito konfigūraciją iš aplinkos kintamųjų (ir .env failų) su , išlaikydama paslaptis iš kodo ir užtikrinant, kad konfigūracija yra teisinga paleistime.
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
app_name: str = "My API"
database_url: str # required — must be provided
secret_key: str # required (a secret)
debug: bool = False
max_connections: int = 10
class Config:
env_file = ".env" # also read from a .env file
settings = Settings() # reads & VALIDATES env vars at startup
BaseSettings automatiškai skaito kiekvieną lauką iš atitinkamo aplinkos kintamojo (pvz. DATABASE_URL), konvertuoja tipus ("true" → bool, "10" → int) ir valida — trūkstanti reikalinga reikšmė arba netinkamas tipas iš karto nepavyksta paleistime su aiškia klaida (greitai nepavykti).
from functools import lru_cache
from fastapi import Depends
@lru_cache # create the Settings once (cached)
def get_settings():
return Settings()
@app.get("/info")
def info(settings: Settings = Depends(get_settings)):
return {"app": settings.app_name, "debug": settings.debug}
Nustatymų injektavimas per cache'intą priklausomybę juos daro testuotinus (perrašyti testuose) ir užtikrina vieną egzempliorių.
.env failas ir paslapys# .env — local config, GITIGNORED (never commit secrets)
DATABASE_URL=postgresql://localhost/mydb
SECRET_KEY=dev-secret
DEBUG=true
✓ Keep secrets in env vars / .env (gitignored); commit a .env.example documenting keys
✓ In production, inject config via the platform's environment / secret manager
✓ Validation at startup catches misconfiguration immediately (not deep in a request)
Tinkamai nustatymų valdymas yra tiek operacinė būtinybė (programos reikalauja skirtingos konfigūracijos dev/staging/production aplinkose), tiek saugumo reikalavimas (paslapys, pavyzdžiui, duomenų bazės URL'ai ir raktai, niekada neturi būti užkoduoti šaltinio kontrolėje — tai dažna ir rimta saugumo pažeista).
Pydantic's BaseSettings suteikia idiomatinį FastAPI sprendimą, ir suprasti jį yra svarbi kasdieninė žinias.
Jo pagrindiniai privalumai: konfigūracijos skaitymas iš aplinkos kintamųjų (paslaptys išliekamos iš kodo, dvylikos veiksnių metodas) su automatiniu tipo konversija ir validacija — taigi blogas konfigūravimas greitai nepavyksta paleistime su aiškia klaida, o ne painu runtime nesėkme.
Suderinus su priklausomybės injektavimu (nustatymų testavimu ir singleton'u) ir gitignored .env failų praktika vietinei plėtrai, tai suteikia jums saugią, validuotą, aplinkai tinkamą konfigūraciją.
Žinoti, kaip nustatyti nustatymus, juos naudoti per DI ir saugiai tvarkyti paslaptis, yra esmingas elementas kuriant gamybai paruoštas FastAPI programas.
IT pokalbių klausimų biblioteka su išsamiais atsakymais — nuo Junior iki Senior.
Paaukoti