Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen Sie leistungsstarke, asynchrone Webanwendungen mit FastAPI

Erstellen Sie leistungsstarke, asynchrone Webanwendungen mit FastAPI

PHPz
PHPzOriginal
2023-09-28 09:16:49908Durchsuche

Erstellen Sie leistungsstarke, asynchrone Webanwendungen mit FastAPI

Verwenden Sie FastAPI, um leistungsstarke, asynchrone Webanwendungen zu erstellen

Mit der rasanten Entwicklung des Internets sind die Leistung und Effizienz von Webanwendungen zu einem der Schwerpunkte der Benutzer geworden. Herkömmliche Web-Frameworks sind bei der Bearbeitung einer großen Anzahl von Anfragen oft ineffizient und können hohe Anforderungen an die Parallelität nicht erfüllen. Um die Leistung und Effizienz von Webanwendungen zu verbessern, wurde FastAPI ins Leben gerufen.

FastAPI ist ein modernes Python-basiertes Web-Framework, das Einfachheit und Benutzerfreundlichkeit beibehält und gleichzeitig eine hervorragende Leistung bietet. FastAPI übernimmt ein asynchrones Programmiermodell und nutzt Pythons Coroutinen und asynchrone E/A-Mechanismen, um Anwendungen die effiziente Verarbeitung einer großen Anzahl gleichzeitiger Anforderungen zu ermöglichen. Im Folgenden wird erläutert, wie Sie mit FastAPI eine leistungsstarke, asynchrone Webanwendung erstellen.

  1. FastAPI installieren

Zuerst müssen Sie FastAPI mit dem Pip-Befehl installieren:

pip install fastapi
  1. Schreiben Sie den Code

Als nächstes erstellen Sie eine Python-Datei, z. B. main.py, und schreiben Sie den folgenden Code:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello, World!"}

Der obige Code erstellt eine FastAPI-Anwendung und definiert eine GET-Anforderungsroute. „/“ steht für das Stammverzeichnis. Beim Zugriff auf das Stammverzeichnis wird eine JSON-Antwort mit dem Inhalt „Hello, World!“ zurückgegeben.

  1. Führen Sie die Anwendung aus

Verwenden Sie uvicorn, um die FastAPI-Anwendung auszuführen:

uvicorn main:app --reload

Jetzt wird die FastAPI-Anwendung ausgeführt. Öffnen Sie den Browser und besuchen Sie http://localhost:8000. Dort wird die Antwort „Hello, World!“ angezeigt.

  1. Asynchrone Verarbeitungsfunktionen schreiben

FastAPI unterstützt die Verwendung asynchroner Verarbeitungsfunktionen zur Bearbeitung von Anforderungen. Das Folgende ist ein Beispiel für die Verwendung einer asynchronen Verarbeitungsfunktion:

from fastapi import FastAPI
import asyncio

app = FastAPI()

async def background_task():
    while True:
        print("Running background task...")
        await asyncio.sleep(1)

@app.get("/")
async def root():
    asyncio.create_task(background_task())
    return {"message": "Hello, World!"}

Im obigen Code definieren wir eine asynchrone Aufgabe „background_task()“, die jede Sekunde „Laufende Hintergrundaufgabe…“ ausgibt. In der Handlerfunktion der Root-Route „/“ verwenden wir asyncio.create_task(), um eine Hintergrundaufgabe zu erstellen. Auf diese Weise wird beim Zugriff auf das Stammverzeichnis gleichzeitig die Ausführung von background_task () gestartet.

  1. Anforderungsparameter verarbeiten

FastAPI unterstützt die Übergabe von Parametern über URL-Pfadparameter, Abfrageparameter, Anforderungstexte usw., was sehr flexibel ist. Das Folgende ist ein Beispiel für die Verwendung von URL-Pfadparametern und Abfrageparametern:

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

Im obigen Code definieren wir eine GET-Anforderungsroute mit dem Pfadparameter item_id und dem Abfrageparameter q. Beim Zugriff beispielsweise auf /items/42?q=test wird die folgende Antwort zurückgegeben:

{
    "item_id": 42,
    "q": "test"
}
  1. Asynchrone Datenbankoperationen

FastAPI unterstützt von Natur aus asynchrone Operationen und kann problemlos mit asynchronen Datenbanken interagieren. Das Folgende ist ein Beispiel für die Verwendung asynchroner Datenbankoperationen:

from fastapi import FastAPI
from databases import Database

app = FastAPI()
database = Database("sqlite:///test.db")

@app.on_event("startup")
async def startup():
    await database.connect()

@app.on_event("shutdown")
async def shutdown():
    await database.disconnect()

@app.get("/")
async def root():
    query = "SELECT * FROM items"
    items = await database.fetch_all(query)
    return {"items": items}

Im obigen Code verwenden wir die Datenbankbibliothek, um eine SQLite-Datenbankverbindung zu erstellen und Verbindungs- und Trennvorgänge durchzuführen, wenn die Anwendung gestartet und heruntergefahren wird. In der Handlerfunktion der Root-Route führen wir eine SELECT-Abfrage aus und geben die Ergebnisse zurück.

  1. Anwendungen bereitstellen

Verwenden Sie Tools wie uvicorn, Gunicorn usw., um FastAPI-Anwendungen in der Produktionsumgebung bereitzustellen. Verwenden Sie beispielsweise Gunicorn, um eine FastAPI-Anwendung bereitzustellen:

gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

Der obige Befehl startet 4 Prozesse und verwendet UvicornWorker zur Bearbeitung von Anfragen.

Zusammenfassung

FastAPI ist ein sehr leistungsstarkes modernes Web-Framework, das uns beim Erstellen leistungsstarker, asynchroner Webanwendungen helfen kann. Durch die Nutzung der asynchronen Programmierfunktionen von Python können wir problemlos eine große Anzahl gleichzeitiger Anforderungen verarbeiten und effiziente Datenbankoperationen erzielen. Unabhängig davon, ob Sie ein persönliches Projekt entwickeln oder eine Anwendung auf Unternehmensebene erstellen, ist FastAPI eine Option, die einen Versuch wert ist.

Das obige ist der detaillierte Inhalt vonErstellen Sie leistungsstarke, asynchrone Webanwendungen mit FastAPI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn