Programu za FastAPI husimamia usanidi kwa pydantic-settings (BaseSettings) — class inayosoma usanidi kutoka kwa environment variables (na faili za .env) ikiwa na , kuweka siri mbali na msimbo na kuhakikisha usanidi ni sahihi wakati wa kuanza.
Programu za FastAPI husimamia usanidi kwa pydantic-settings (BaseSettings) — class inayosoma usanidi kutoka kwa environment variables (na faili za .env) ikiwa na , kuweka siri mbali na msimbo na kuhakikisha usanidi ni sahihi wakati wa kuanza.
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 husoma kiotomatiki kila sehemu kutoka kwa environment variable inayolingana (k.m. DATABASE_URL), hubadilisha aina ("true" → bool, "10" → int), na huthibitisha — thamani ya lazima iliyokosekana au aina isiyo sahihi hushindwa mara moja wakati wa kuanza kwa hitilafu wazi (fail-fast).
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}
Kuingiza settings kupitia dependency iliyohifadhiwa (cached) kunazifanya ziweze kupimwa (zibadilishe wakati wa majaribio) na kuhakikisha mfano mmoja (single instance).
# .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)
Usimamizi sahihi wa settings ni ulazima wa kiutendaji (programu zinahitaji usanidi tofauti katika dev/staging/production) na hitaji la usalama (siri kama database URLs na keys kamwe hazipaswi kuwekwa moja kwa moja kwenye udhibiti wa msimbo — uvunjaji wa kawaida na mkubwa).
BaseSettings ya Pydantic hutoa suluhisho la kawaida la FastAPI, na kuelewa ni maarifa muhimu ya kila siku.
Faida zake kuu: kusoma usanidi kutoka kwa environment variables (kuweka siri mbali na msimbo, mbinu ya twelve-factor) ikiwa na ubadilishaji wa aina na uthibitishaji wa kiotomatiki — hivyo usanidi mbaya hushindwa haraka wakati wa kuanza kwa hitilafu wazi badala ya kushindwa kwa wakati wa utekelezaji kunakochanganya.
Kwa kuchanganywa na dependency injection (kufanya settings ziweze kupimwa na ziwe singleton) na desturi ya faili za .env zilizofichwa kwenye git kwa ukuzaji wa ndani, hili hukupa usanidi salama, uliothibitishwa, na unaofaa mazingira.
Kujua jinsi ya kufafanua settings, kuzitumia kupitia DI, na kushughulikia siri kwa usalama ni jambo la msingi kwa kujenga programu za FastAPI zilizo tayari kwa production.