Skip to content

Konfigurationsreferenz

Alle Einstellungen werden von AppSettings (Pydantic Settings) verwaltet und können über Umgebungsvariablen oder eine .env-Datei bereitgestellt werden.

Kern

VariableStandardBeschreibung
APP_ENVlocalLaufzeitumgebung: local / test / production
APP_DEBUGfalseAusnahme-Meldungen in 500-Antworten einschließen wenn true
APP_NAMEnene2-pythonAnwendungsname

Sicherheit

VariableStandardBeschreibung
SECURITY_HEADERS_ENABLEDtrueSicherheitsheader zu jeder Antwort hinzufügen
MAX_BODY_SIZE1048576Maximale Request-Body-Größe in Bytes (Standard 1 MiB)

Sicherheitsheader, die bei Aktivierung hinzugefügt werden:

HeaderWert
X-Content-Type-Optionsnosniff
X-Frame-OptionsDENY
Referrer-Policystrict-origin-when-cross-origin
Content-Security-Policydefault-src 'self'
Permissions-Policygeolocation=(), microphone=()

Rate-Limiting

VariableStandardBeschreibung
THROTTLE_ENABLEDtrueRate-Limiting aktivieren
THROTTLE_LIMIT60Maximale Anfragen pro Zeitfenster
THROTTLE_WINDOW60Zeitfenstergröße in Sekunden

Verwendet einen Festfenster-Algorithmus mit Client-IP-Schlüssel. Das Überschreiten des Limits gibt 429 Too Many Requests mit einem Retry-After-Header zurück.

CORS

VariableStandardBeschreibung
CORS_ENABLEDfalseCORS-Middleware aktivieren
CORS_ORIGINS[]Erlaubte Origins (kommagetrennt)
CORS_ALLOW_CREDENTIALSfalseCredentials erlauben
CORS_ALLOW_METHODSGET,POST,PUT,DELETE,OPTIONSErlaubte Methoden
CORS_ALLOW_HEADERS*Erlaubte Header

CORS_ORIGINS=* ist verboten. Geben Sie immer explizite Origins an.

Authentifizierung

VariableStandardBeschreibung
BEARER_TOKEN_ENABLEDfalseBearer-Token-Auth aktivieren
BEARER_TOKENS[]Gültige Tokens — JSON-Array-Format: ["tok-1","tok-2"]
API_KEY_ENABLEDfalseAPI-Key-Auth aktivieren
API_KEYS[]Gültige API-Keys — JSON-Array-Format: ["key-1","key-2"]

Listenfelder erfordern JSON-Array-Syntax in .env. Das Schreiben von BEARER_TOKENS=token-1 (einfacher String) verursacht beim Start einen JSONDecodeError. Verwenden Sie immer BEARER_TOKENS=["token-1","token-2"]. Dasselbe gilt für API_KEYS und CORS_ORIGINS.

Datenbank

VariableStandardBeschreibung
DB_ADAPTERsqlitesqlite / mysql / pgsql
DB_NAME:memory:SQLite-Dateipfad oder DB-Name
DB_HOSTlocalhostDatenbank-Host (für SQLite ignoriert)
DB_PORT3306Datenbank-Port (für SQLite ignoriert)
DB_USER""Datenbankbenutzer (für SQLite ignoriert)
DB_PASSWORD""Datenbankkennwort — als SecretStr gespeichert, nie geloggt

Generierte db_url

AppSettings.db_url ist eine berechnete Eigenschaft, die aus den obigen Variablen aufgebaut wird. Die folgende Tabelle zeigt, welche URL für jeden Adapter + gängige DB_NAME-Werte generiert wird:

DB_ADAPTERDB_NAMEGenerierte db_url
sqlite:memory:sqlite:///:memory:
sqlite./data/app.dbsqlite:///./data/app.db
sqlite/var/lib/app.dbsqlite:////var/lib/app.db
mysqlmydbmysql+pymysql://user:pass@localhost:3306/mydb
pgsqlmydbpostgresql+psycopg2://user:pass@localhost:5432/mydb

Für SQLite-In-Memory-Datenbanken (DB_NAME=:memory:) übergeben Sie poolclass=StaticPool an create_engine(), damit alle Verbindungen dieselbe In-Process-Datenbank teilen. Einzelheiten finden Sie im SQLAlchemy-Repository How-to.

Beispiel .env

dotenv
APP_ENV=production
APP_DEBUG=false

THROTTLE_ENABLED=true
THROTTLE_LIMIT=100
THROTTLE_WINDOW=60

CORS_ENABLED=true
CORS_ORIGINS=["https://example.com","https://app.example.com"]

BEARER_TOKEN_ENABLED=true
BEARER_TOKENS=["secret-token-1","secret-token-2"]

DB_ADAPTER=mysql
DB_HOST=db.example.com
DB_PORT=3306
DB_NAME=myapp
DB_USER=myuser
DB_PASSWORD=supersecret

Committen Sie .env.example mit leeren Werten. Halten Sie die echte .env in .gitignore.

Veröffentlicht unter der MIT-Lizenz.