Warum FastAPI statt Flask wählen?
Um Ihnen den Einstieg in Milvus, die Open-Source-Vektordatenbank, zu erleichtern, haben wir ein weiteres Open-Source-Projekt, Milvus Bootcamp, auf GitHub veröffentlicht. Das Milvus Bootcamp stellt nicht nur Skripte und Daten für Benchmark-Tests zur Verfügung, sondern enthält auch Projekte, die Milvus nutzen, um einige MVPs (Minimum Viable Products) zu bauen, wie z. B. ein System zur umgekehrten Bildsuche, ein Videoanalysesystem, einen QA-Chatbot oder ein Empfehlungssystem. Im Milvus Bootcamp können Sie lernen, wie man die Vektorähnlichkeitssuche in einer Welt voller unstrukturierter Daten anwendet und praktische Erfahrungen sammeln.
2.png
Wir bieten sowohl Front-End- als auch Back-End-Dienste für die Projekte in Milvus Bootcamp an. Allerdings haben wir vor kurzem die Entscheidung getroffen, das verwendete Web-Framework von Flask auf FastAPI umzustellen.
In diesem Artikel möchten wir unsere Beweggründe für den Wechsel des Web-Frameworks für Milvus Bootcamp erläutern und erklären, warum wir uns für FastAPI statt Flask entschieden haben.
Web-Frameworks für Python
Ein Web-Framework bezieht sich auf eine Sammlung von Paketen oder Modulen. Es handelt sich dabei um eine Reihe von Softwarearchitekturen für die Webentwicklung, die es Ihnen ermöglichen, Webanwendungen oder -dienste zu schreiben, und Ihnen die Mühe ersparen, sich mit Details auf niedriger Ebene wie Protokollen, Sockets oder Prozess-/Thread-Management zu beschäftigen. Die Verwendung von Web-Frameworks kann die Arbeitsbelastung bei der Entwicklung von Webanwendungen erheblich reduzieren, da Sie Ihren Code einfach in das Framework "einfügen" können, ohne sich um Daten-Caching, Datenbankzugriff und Datensicherheitsüberprüfung kümmern zu müssen. Weitere Informationen darüber, was ein Web-Framework für Python ist, finden Sie unter Web-Frameworks.
Es gibt verschiedene Arten von Python-Web-Frameworks. Zu den gängigsten gehören Django, Flask, Tornado und FastAPI.
Flask
3.png
Flask ist ein leichtgewichtiges Microframework für Python mit einem einfachen und leicht zu verwendenden Kern, mit dem Sie Ihre eigenen Webanwendungen entwickeln können. Darüber hinaus ist der Kern von Flask auch erweiterbar. Daher unterstützt Flask die On-Demand-Erweiterung verschiedener Funktionen, um Ihre persönlichen Bedürfnisse bei der Entwicklung von Webanwendungen zu erfüllen. Das heißt, dass Sie mit einer Bibliothek verschiedener Plug-ins in Flask leistungsstarke Websites entwickeln können.
Flask hat die folgenden Eigenschaften:
- Flask ist ein Microframework, das nicht auf andere spezifische Tools oder Komponenten von Drittanbieter-Bibliotheken angewiesen ist, um gemeinsame Funktionalitäten bereitzustellen. Flask verfügt nicht über eine Datenbankabstraktionsschicht und erfordert keine Formularvalidierung. Flask ist jedoch in hohem Maße erweiterbar und unterstützt das Hinzufügen von Anwendungsfunktionalität in einer Weise, die den Implementierungen in Flask selbst ähnelt. Zu den relevanten Erweiterungen gehören objektrelationale Mapper, Formularvalidierung, Upload-Verarbeitung, offene Authentifizierungstechnologien und einige gängige Tools, die für Web-Frameworks entwickelt wurden.
- Flask ist ein Webanwendungs-Framework, das auf WSGI (Web Server Gateway Interface) basiert. WSGI ist eine einfache Schnittstelle, die einen Webserver mit einer Webanwendung oder einem für die Sprache Python definierten Framework verbindet.
- Flask enthält zwei zentrale Funktionsbibliotheken, Werkzeug und Jinja2. Werkzeug ist ein WSGI-Toolkit, das Request- und Response-Objekte sowie praktische Funktionen implementiert, mit denen Sie darauf aufbauend Web-Frameworks erstellen können. Jinja2 ist eine populäre Templating-Engine mit vollem Funktionsumfang für Python. Sie bietet volle Unterstützung für Unicode und eine optionale, aber weit verbreitete integrierte Sandbox-Ausführungsumgebung.
FastAPI
4.png
FastAPI ist ein modernes Python-Framework für Webanwendungen, das die gleiche hohe Leistung wie Go und NodeJS bietet. Der Kern von FastAPI basiert auf Starlette und Pydantic. Starlette ist ein leichtgewichtiges ASGI(Asynchronous Server Gateway Interface)-Framework-Toolkit zur Erstellung hochleistungsfähiger Asyncio-Dienste. Pydantic ist eine Bibliothek, die Datenvalidierung, Serialisierung und Dokumentation auf der Grundlage von Python-Typ-Hinweisen definiert.
FastAPI hat die folgenden Eigenschaften:
- FastAPI ist ein Webanwendungs-Framework, das auf ASGI basiert, einer asynchronen Gateway-Protokollschnittstelle, die Netzwerkprotokolldienste und Python-Anwendungen verbindet. FastAPI kann eine Vielzahl gängiger Protokolltypen verarbeiten, darunter HTTP, HTTP2 und WebSocket.
- FastAPI basiert auf Pydantic, das die Funktion der Überprüfung des Schnittstellendatentyps bietet. Sie brauchen Ihre Schnittstellenparameter nicht zusätzlich zu überprüfen oder zusätzlichen Code zu schreiben, um zu überprüfen, ob die Parameter leer sind oder ob der Datentyp korrekt ist. Durch die Verwendung von FastAPI können menschliche Fehler im Code vermieden und die Entwicklungseffizienz verbessert werden.
- FastAPI unterstützt Dokumente in zwei Formaten - OpenAPI (früher Swagger) und Redoc. Daher müssen Sie als Benutzer keine zusätzliche Zeit mit dem Schreiben zusätzlicher Schnittstellendokumente verbringen. Das von FastAPI bereitgestellte OpenAPI-Dokument ist im folgenden Screenshot dargestellt.
5.png
Flask vs. FastAPI
Die folgende Tabelle zeigt die Unterschiede zwischen Flask und FastAPI in verschiedenen Aspekten.
FastAPI | Flask | |
---|---|---|
Interface-Gateway | ASGI | WSGI |
Asynchroner Rahmen | ✅ | ❌ |
Leistung | Schneller | Langsamer |
Interaktives Dokument | OpenAPI, Redoc | Keine |
Überprüfung der Daten | ✅ | ❌ |
Entwicklungskosten | Niedriger | Höher |
Benutzerfreundlichkeit | Niedriger | Höher |
Flexibilität | Weniger flexibel | Flexibler |
Gemeinschaft | Kleiner | Aktiver |
Warum FastAPI?
Bevor wir uns für ein Python-Webanwendungs-Framework für die Projekte im Milvus Bootcamp entschieden haben, haben wir mehrere Mainstream-Frameworks wie Django, Flask, FastAPI, Tornado und andere untersucht. Da die Projekte im Milvus Bootcamp als Referenzen für Sie dienen, ist es unsere Priorität, ein externes Framework von größtmöglicher Leichtigkeit und Geschicklichkeit zu wählen. Nach dieser Regel haben wir unsere Wahl auf Flask und FastAPI eingegrenzt.
Den Vergleich zwischen den beiden Web-Frameworks können Sie im vorherigen Abschnitt sehen. Im Folgenden wird unsere Motivation, FastAPI gegenüber Flask für die Projekte im Milvus Bootcamp zu bevorzugen, ausführlich erläutert. Dafür gibt es mehrere Gründe:
1. Leistung
Die meisten der Projekte im Milvus Bootcamp sind um umgekehrte Bildsuchsysteme, QA-Chatbots und Textsuchmaschinen herum aufgebaut, die alle hohe Anforderungen an die Echtzeit-Datenverarbeitung stellen. Dementsprechend benötigen wir ein Framework mit hervorragender Leistung, was genau ein Highlight von FastAPI ist. Daher haben wir uns unter dem Gesichtspunkt der Systemleistung für FastAPI entschieden.
2. Effizienz
Bei der Verwendung von Flask müssen Sie Code für die Datentypüberprüfung in jeder der Schnittstellen schreiben, damit das System feststellen kann, ob die Eingabedaten leer sind oder nicht. Durch die Unterstützung der automatischen Datentypüberprüfung trägt FastAPI jedoch dazu bei, menschliche Fehler bei der Programmierung während der Systementwicklung zu vermeiden, und kann die Entwicklungseffizienz erheblich steigern. Das Bootcamp ist als eine Art Schulungsressource positioniert. Das bedeutet, dass der Code und die Komponenten, die wir verwenden, intuitiv und hocheffizient sein müssen. In dieser Hinsicht haben wir uns für FastAPI entschieden, um die Systemeffizienz zu steigern und die Benutzererfahrung zu verbessern.
3. Asynchroner Rahmen
FastAPI ist von Natur aus ein asynchrones Framework. Ursprünglich haben wir vier Demos veröffentlicht: umgekehrte Bildsuche, Videoanalyse, QA Chatbot und molekulare Ähnlichkeitssuche. In diesen Demos können Sie Datensätze hochladen und erhalten sofort die Meldung "Anfrage erhalten". Wenn die Daten in das Demosystem hochgeladen wurden, erhalten Sie eine weitere Meldung "Datenupload erfolgreich". Dies ist ein asynchroner Prozess, der ein Framework erfordert, das diese Funktion unterstützt. FastAPI ist selbst ein asynchrones Framework. Um alle Milvus-Ressourcen aufeinander abzustimmen, haben wir beschlossen, einen einzigen Satz von Entwicklungswerkzeugen und Software sowohl für das Milvus Bootcamp als auch für die Milvus-Demos zu verwenden. Infolgedessen haben wir das Framework von Flask auf FastAPI umgestellt.
4. Automatische interaktive Dokumente
Wenn Sie auf herkömmliche Weise den Code für die Serverseite fertig geschrieben haben, müssen Sie ein zusätzliches Dokument schreiben, um eine Schnittstelle zu erstellen, und dann Tools wie Postman für API-Tests und Debugging verwenden. Was also, wenn Sie nur schnell mit dem Webserver-seitigen Entwicklungsteil der Projekte in Milvus Bootcamp beginnen wollen, ohne zusätzlichen Code zur Erstellung einer Schnittstelle zu schreiben? FastAPI ist die Lösung. Durch die Bereitstellung eines OpenAPI-Dokuments erspart Ihnen FastAPI das Testen oder Debuggen von APIs und die Zusammenarbeit mit Front-End-Teams zur Entwicklung einer Benutzeroberfläche. Mit FastAPI können Sie die erstellte Anwendung mit einer automatischen, aber intuitiven Schnittstelle ohne zusätzlichen Programmieraufwand schnell testen.
5. Benutzerfreundlichkeit
FastAPI ist einfacher zu bedienen und zu entwickeln, so dass Sie sich mehr auf die konkrete Umsetzung des Projekts konzentrieren können. Ohne zu viel Zeit auf die Entwicklung von Web-Frameworks zu verwenden, können Sie sich mehr auf das Verständnis der Projekte in Milvus Bootcamp konzentrieren.
Rekapitulation
Flask und FlastAPI haben ihre eigenen Vor- und Nachteile. FlastAPI ist ein aufstrebendes Webanwendungs-Framework, das im Kern auf ausgereiften Toolkits und Bibliotheken wie Starlette und Pydantic aufbaut. FastAPI ist ein asynchrones Framework mit hoher Leistung. Seine Geschicklichkeit, Erweiterbarkeit und Unterstützung für die automatische Datentypüberprüfung sowie viele andere leistungsstarke Funktionen haben uns veranlasst, FastAPI als Framework für Milvus-Bootcamp-Projekte einzusetzen.
Bitte beachten Sie, dass Sie das passende Framework für Ihr Anwendungsszenario wählen sollten, wenn Sie ein Vektorähnlichkeitssuchsystem in der Produktion aufbauen wollen.
Über den Autor
Yunmei Li, Zilliz Data Engineer, hat einen Abschluss in Informatik von der Huazhong University of Science and Technology. Seit sie bei Zilliz ist, arbeitet sie an der Erforschung von Lösungen für das Open-Source-Projekt Milvus und hilft Benutzern, Milvus in realen Szenarien anzuwenden. Ihr Hauptaugenmerk liegt auf NLP und Empfehlungssystemen, und sie möchte ihren Fokus auf diese beiden Bereiche weiter vertiefen. Sie verbringt gerne Zeit alleine und liest.
Suchen Sie nach weiteren Ressourcen?
Beginnen Sie mit der Erstellung von KI-Systemen mit Milvus und sammeln Sie mehr praktische Erfahrung, indem Sie unsere Tutorials lesen!
- Was ist sie? Wer ist sie? Milvus hilft bei der intelligenten Analyse von Videos
- Kombinieren Sie AI-Modelle für die Bildsuche mit ONNX und Milvus
- DNA-Sequenz-Klassifizierung auf Basis von Milvus
- Audio-Retrieval auf Basis von Milvus
- 4 Schritte zum Aufbau eines Video-Suchsystems
- Aufbau eines intelligenten QA-Systems mit NLP und Milvus
- Beschleunigung der Entdeckung von neuen Medikamenten
Beteiligen Sie sich an unserer Open-Source-Community:
- Web-Frameworks für Python
- Warum FastAPI?
- Rekapitulation
- Über den Autor
- Suchen Sie nach weiteren Ressourcen?
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word