FastAPI-Backend
Zur Erinnerung: Den FastAPI-Code finden Sie unten app-api/api.
Schritt 1: Erstellen Sie die FastAPI-Anwendung, in der wir die Dokumente, die CORS-Middleware und den Root-API-Router der Endpunkte konfiguriert haben.
Schritt 2: Definieren Sie die Settings-Klasse. Der Umfang dieser Klasse besteht darin, alle Konstanten und Konfigurationen zu speichern, die Sie in Ihrem API-Code benötigen, wie zum Beispiel:
- generische Konfigurationen: den Port, den Log-Degree oder die Model,
- GCP-Anmeldeinformationen: Bucket-Identify oder Pfad zu den JSON-Dienstkontoschlüsseln.
Sie verwenden das Settings-Objekt im gesamten Projekt mithilfe von get_settings() Funktion.
Auch im Inneren Konfig Klasse haben wir FastAPI so programmiert, dass es nach a sucht .env Datei im aktuellen Verzeichnis und laden Sie alle Variablen mit dem Präfix APP_API_.
Wie Sie in der sehen können .env.default Datei, alle Variablen beginnen mit APP_API_.
Schritt 3: Definieren Sie die Schemata der API-Daten mit Pydantic. Diese Schemata kodieren oder dekodieren Daten von JSON in ein Python-Objekt oder umgekehrt. Außerdem validieren sie den Typ und die Struktur Ihres JSON-Objekts basierend auf Ihrem definierten Datenmodell.
Beim Definieren eines Pydantic-Basismodells ist es wichtig, jeder Variablen einen Typ hinzuzufügen, der im Validierungsschritt verwendet wird.
Schritt 4: Definieren Sie Ihre Endpunkte, im Webjargon als Ansichten bezeichnet. Normalerweise hat eine Ansicht Zugriff auf einen Datenspeicher und gibt basierend auf einer Abfrage eine Teilmenge der Datenquelle an den Anforderer zurück.
Daher sieht ein Standardablauf zum Abrufen (auch GET-Anfrage genannt) von Daten wie folgt aus:
„Consumer → Daten anfordern → Endpunkt → auf Datenspeicher zugreifen → in ein Pydantic-Schema kodieren → in JSON dekodieren → mit den angeforderten Daten antworten“
Sehen wir uns an, wie wir einen Endpunkt definiert haben, um alle Verbrauchertypen abzurufen:
Wir verwendeten „gcsfs.GCSFileSystem“ um auf den GCS-Bucket als Standarddateisystem zuzugreifen.
Wir haben den Endpunkt angehängt api_router.
Verwendung der api_router.get() Wir haben dem Python-Dekorator eine Grundfunktion hinzugefügt /consumer_type_values Endpunkt.
Im obigen Beispiel wird beim Aufruf von „https://
Eine weitere wichtige Sache ist, dies durch die Definition hervorzuheben Response_Model (auch bekannt als Schema) im Python-Dekorator, Sie müssen das Pydantic-Schema nicht explizit erstellen.
Wenn Sie ein Wörterbuch zurückgeben, das 1:1 ist und die Schemastruktur berücksichtigt, erstellt FastAPI automatisch das Pydantic-Objekt für Sie.
Das ist es. Jetzt wiederholen wir dieselbe Logik, um die restlichen Endpunkte zu definieren. FastAPI macht alles für Sie so einfach und intuitiv.
Schauen wir uns nun das Ganze an Ansichten.py Datei, in der wir Endpunkte für Folgendes definiert haben:
- /Gesundheit → Gesundheitscheck
- /consumer_type_values → GET alle möglichen Verbrauchertypen
- /area_values → GET alle möglichen Gebietstypen
- /predictions/{space}/{consumer_type} → ERHALTEN Sie die Vorhersagen für einen bestimmten Bereich und Verbrauchertyp. Beachten Sie, dass Sie mit der {
}-Syntax Parameter zu Ihrem Endpunkt hinzufügen können – FastAPI-Dokumente [2]. - /Überwachung/Metriken → ERHALTEN Sie die aggregierten Überwachungsmetriken
- /monitoring/values/{space}/{consumer_type} → ERHALTEN Sie die Überwachungswerte für einen bestimmten Bereich und Verbrauchertyp
Ich möchte noch einmal hervorheben, dass das FastAPI-Backend nur die Vorhersagen des GCS-Buckets liest. Der Inferenzschritt erfolgt ausschließlich in der Batch-Vorhersagepipeline.
Sie können auch zu „http://
Das ist es! Jetzt wissen Sie, wie Sie ein FastAPI-Backend erstellen. Beim Hinzufügen einer Datenbankschicht und Benutzersitzungen wird es möglicherweise komplizierter, aber Sie haben alle wichtigen Konzepte kennengelernt, die Ihnen den Einstieg erleichtern werden!