Benchmarks¶
UnabhĂ€ngige TechEmpower-Benchmarks zeigen FastAPI-Anwendungen, die unter Uvicorn ausgefĂŒhrt werden, als eines der schnellsten verfĂŒgbaren Python-Frameworks, nur unterhalb von Starlette und Uvicorn selbst (die intern von FastAPI verwendet werden).
Aber bei der Betrachtung von Benchmarks und Vergleichen sollten Sie Folgendes beachten.
Benchmarks und Geschwindigkeit¶
Wenn Sie die Benchmarks ansehen, ist es ĂŒblich, dass mehrere Tools unterschiedlichen Typs als gleichwertig verglichen werden.
Insbesondere dass Uvicorn, Starlette und FastAPI zusammen verglichen werden (neben vielen anderen Tools).
Je einfacher das Problem, das durch das Tool gelöst wird, desto besser wird die Performanz sein. Und die meisten Benchmarks testen nicht die zusÀtzlichen Funktionen, die das Tool bietet.
Die Hierarchie ist wie folgt:
-
Uvicorn: ein ASGI-Server
- Starlette: (verwendet Uvicorn) ein Web-Mikroframework
- FastAPI: (verwendet Starlette) ein API-Mikroframework mit mehreren zusÀtzlichen Funktionen zum Erstellen von APIs, mit Datenvalidierung, usw.
- Starlette: (verwendet Uvicorn) ein Web-Mikroframework
-
Uvicorn:
- Wird die beste Performanz haben, da auĂer dem Server selbst nicht viel zusĂ€tzlicher Code vorhanden ist.
- Sie wĂŒrden eine Anwendung nicht direkt in Uvicorn schreiben. Das wĂŒrde bedeuten, dass Ihr Code zumindest mehr oder weniger den gesamten von Starlette (oder FastAPI) bereitgestellten Code enthalten mĂŒsste. Und wenn Sie das tĂ€ten, hĂ€tte Ihre endgĂŒltige Anwendung den gleichen Overhead wie bei der Verwendung eines Frameworks und der Minimierung Ihres Anwendungscodes und der Fehler.
- Wenn Sie Uvicorn vergleichen, vergleichen Sie es mit Anwendungsservern wie Daphne, Hypercorn, uWSGI, usw.
- Starlette:
- Wird nach Uvicorn die nĂ€chstbeste Performanz erbringen. TatsĂ€chlich verwendet Starlette intern Uvicorn, um zu laufen. Daher kann es wahrscheinlich nur âlangsamerâ als Uvicorn werden, weil mehr Code ausgefĂŒhrt werden muss.
- Aber es bietet Ihnen die Werkzeuge, um einfache Webanwendungen zu erstellen, mit Routing basierend auf Pfaden, usw.
- Wenn Sie Starlette vergleichen, vergleichen Sie es mit Webframeworks (oder Mikroframeworks) wie Sanic, Flask, Django, usw.
- FastAPI:
- So wie Starlette Uvicorn verwendet und nicht schneller als dieses sein kann, verwendet FastAPI Starlette, sodass es nicht schneller als dieses sein kann.
- FastAPI bietet zusĂ€tzliche Funktionen auf Basis von Starlette. Funktionen, die Sie beim Erstellen von APIs fast immer benötigen, wie Datenvalidierung und Serialisierung. Und wenn Sie es verwenden, erhalten Sie kostenlose automatische Dokumentation (die automatische Dokumentation verursacht nicht einmal zusĂ€tzlichen Overhead fĂŒr laufende Anwendungen, sie wird beim Starten generiert).
- Wenn Sie FastAPI nicht verwenden und stattdessen Starlette direkt (oder ein anderes Tool wie Sanic, Flask, Responder, usw.) verwenden wĂŒrden, mĂŒssten Sie die gesamte Datenvalidierung und Serialisierung selbst implementieren. Ihre finale Anwendung hĂ€tte also immer noch den gleichen Overhead, als ob sie mit FastAPI erstellt worden wĂ€re. Und in vielen FĂ€llen ist diese Datenvalidierung und Serialisierung der gröĂte Teil des in Anwendungen geschriebenen Codes.
- Durch die Verwendung von FastAPI sparen Sie also Entwicklungszeit, Fehler und Codezeilen und wĂŒrden wahrscheinlich die gleiche Performanz (oder eine bessere) erzielen, die Sie hĂ€tten, wenn Sie es nicht verwenden wĂŒrden (da Sie alles in Ihrem Code implementieren mĂŒssten).
- Wenn Sie FastAPI vergleichen, vergleichen Sie es mit einem Webanwendungs-Framework (oder einer Reihe von Tools), das Datenvalidierung, Serialisierung und Dokumentation bereitstellt, wie Flask-apispec, NestJS, Molten, usw. â Frameworks mit integrierter automatischer Datenvalidierung, Serialisierung und Dokumentation.