suchen
HeimBackend-EntwicklungPython-TutorialSteigern Sie Ihre API-Leistung mit asynchroner Programmierung in FastAPI

Bereit, Ihr API-Spiel auf die nächste Stufe zu bringen?

FastAPI ist hier, um Ihre APIs schneller und reaktionsfähiger zu machen und sie in die Lage zu versetzen, schwere Lasten wie ein Profi zu bewältigen.

In diesem Artikel zeigen wir Ihnen, wie Sie die asynchrone Programmierung in FastAPI nutzen, um leistungsstarke APIs zu erstellen. Am Ende verfügen Sie über das Wissen, asynchrone Endpunkte zu implementieren und effektiv zu testen.

Was Sie lernen werden

Das werden Sie beherrschen:

  • Die Grundlagen der asynchronen Programmierung und warum sie wichtig ist.
  • So richten Sie eine FastAPI-Umgebung für die asynchrone Entwicklung ein.
  • Schreiben und Testen asynchroner Endpunkte anhand von Beispielen aus der Praxis.
  • Verwendung asynchroner Bibliotheken für HTTP-Anfragen, Dateiverarbeitung und Hintergrundaufgaben.

Warum asynchrone Programmierung in FastAPI verwenden?

Was ist das?

Asynchrone Programmierung ermöglicht die gleichzeitige Ausführung von Aufgaben. Dies ist besonders nützlich für Aufgaben wie Netzwerkanfragen, Datenbankabfragen oder Dateivorgänge, bei denen häufig auf eine Antwort gewartet wird.

Warum ist es wichtig?

Bei der herkömmlichen synchronen Programmierung werden Aufgaben nacheinander ausgeführt, was zu Verzögerungen bei der Bearbeitung mehrerer Anfragen führt. Mit der asynchronen Programmierung können Sie mehrere Benutzer gleichzeitig bedienen, wodurch die Ressourcennutzung maximiert und ein besseres Benutzererlebnis gewährleistet wird.

Einrichten Ihrer FastAPI-Umgebung

Jetzt krempeln wir die Ärmel hoch und bauen etwas Erstaunliches!

Installieren Sie zunächst die erforderlichen Bibliotheken:

pip install "fastapi[standard]" httpx aiofiles pytest

Der Kodex

Unten finden Sie ein vollständiges Beispiel, das die asynchrone Programmierung in FastAPI demonstriert. Jeder Teil des Codes dient einem einzigartigen Zweck und wir erklären ihn Schritt für Schritt.

from fastapi import FastAPI, BackgroundTasks
import httpx
import aiofiles
import pytest
from fastapi.testclient import TestClient

app = FastAPI()

# API Endpoints
@app.get("/item/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

@app.get("/external-api")
async def call_external_api():
    async with httpx.AsyncClient() as client:
        response = await client.get("https://jsonplaceholder.typicode.com/posts/1")
    return response.json()

@app.get("/read-file")
async def read_file():
    async with aiofiles.open("example.txt", mode="r") as file:
        content = await file.read()
    return {"content": content}

def send_email(email: str, message: str):
    print(f"Sending email to {email} with message: {message}")

@app.post("/send-email/")
async def schedule_email(background_tasks: BackgroundTasks, email: str):
    background_tasks.add_task(send_email, email, "Welcome!")
    return {"message": "Email scheduled"}

# Testing Code
client = TestClient(app)

def test_read_item():
    response = client.get("/item/1")
    assert response.status_code == 200
    assert response.json() == {"item_id": 1}

def test_read_file():
    # Create an example file for testing
    with open("example.txt", "w") as file:
        file.write("This is a test file content")

    response = client.get("/read-file")
    assert response.status_code == 200
    assert response.json() == {"content": "This is a test file content"}

def test_schedule_email():
    response = client.post("/send-email/?email=fogigav197@rabitex.com")
    assert response.status_code == 200
    assert response.json() == {"message": "Email scheduled"}

@pytest.mark.asyncio
async def test_call_external_api():
    async with httpx.AsyncClient() as async_client:
        response = await async_client.get("https://jsonplaceholder.typicode.com/posts/1")
    assert response.status_code == 200
    assert "id" in response.json()

Aufschlüsseln

API-Endpunkte

1.Einfacher asynchroner Endpunkt

@app.get("/item/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

Dieser Endpunkt zeigt, wie man mit async def eine grundlegende asynchrone Route definiert. Es ruft ein Element anhand seiner ID ab.

2.Aufrufen einer externen API

@app.get("/external-api")
async def call_external_api():
    async with httpx.AsyncClient() as client:
        response = await client.get("https://jsonplaceholder.typicode.com/posts/1")
    return response.json()

Dies zeigt, wie Sie mit httpx eine nicht blockierende HTTP-Anfrage stellen. Während Sie auf die externe API-Antwort warten, kann Ihre Anwendung andere Anfragen verarbeiten.

3.Asynchrones Lesen von Dateien

@app.get("/read-file")
async def read_file():
    async with aiofiles.open("example.txt", mode="r") as file:
        content = await file.read()
    return {"content": content}

Dadurch wird eine Datei asynchron gelesen, um sicherzustellen, dass der Dateivorgang die Anwendung nicht blockiert.

4.Ausführung von Hintergrundaufgaben

def send_email(email: str, message: str):
    print(f"Sending email to {email} with message: {message}")

@app.post("/send-email/")
async def schedule_email(background_tasks: BackgroundTasks, email: str):
    background_tasks.add_task(send_email, email, "Welcome!")
    return {"message": "Email scheduled"}

Dieser Endpunkt plant eine Hintergrundaufgabe zum Senden einer E-Mail, sodass der Hauptthread andere Anfragen bearbeiten kann.

Testen des Codes

1.Basisendpunkt testen

def test_read_item():
    response = client.get("/item/1")
    assert response.status_code == 200
    assert response.json() == {"item_id": 1}

Dadurch wird überprüft, ob der Endpunkt /item/{item_id} die erwarteten Daten zurückgibt.

2.Testen des Dateilesens

pip install "fastapi[standard]" httpx aiofiles pytest

Dadurch wird eine Testdatei erstellt und überprüft, ob der /read-file-Endpunkt seinen Inhalt korrekt liest und zurückgibt.

3.Hintergrundaufgabe testen

from fastapi import FastAPI, BackgroundTasks
import httpx
import aiofiles
import pytest
from fastapi.testclient import TestClient

app = FastAPI()

# API Endpoints
@app.get("/item/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

@app.get("/external-api")
async def call_external_api():
    async with httpx.AsyncClient() as client:
        response = await client.get("https://jsonplaceholder.typicode.com/posts/1")
    return response.json()

@app.get("/read-file")
async def read_file():
    async with aiofiles.open("example.txt", mode="r") as file:
        content = await file.read()
    return {"content": content}

def send_email(email: str, message: str):
    print(f"Sending email to {email} with message: {message}")

@app.post("/send-email/")
async def schedule_email(background_tasks: BackgroundTasks, email: str):
    background_tasks.add_task(send_email, email, "Welcome!")
    return {"message": "Email scheduled"}

# Testing Code
client = TestClient(app)

def test_read_item():
    response = client.get("/item/1")
    assert response.status_code == 200
    assert response.json() == {"item_id": 1}

def test_read_file():
    # Create an example file for testing
    with open("example.txt", "w") as file:
        file.write("This is a test file content")

    response = client.get("/read-file")
    assert response.status_code == 200
    assert response.json() == {"content": "This is a test file content"}

def test_schedule_email():
    response = client.post("/send-email/?email=fogigav197@rabitex.com")
    assert response.status_code == 200
    assert response.json() == {"message": "Email scheduled"}

@pytest.mark.asyncio
async def test_call_external_api():
    async with httpx.AsyncClient() as async_client:
        response = await async_client.get("https://jsonplaceholder.typicode.com/posts/1")
    assert response.status_code == 200
    assert "id" in response.json()

Dies testet, ob die Hintergrund-E-Mail-Aufgabe erfolgreich geplant wurde.

4.Externen API-Aufruf testen

@app.get("/item/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

Dadurch wird sichergestellt, dass der /external-api-Endpunkt Daten korrekt von einer externen Quelle abruft.

Ausgabe

Supercharge Your API Performance with Asynchronous Programming in FastAPI

Abschluss

Mit dem bereitgestellten Code verfügen Sie nun über ein praktisches Verständnis dafür, wie Sie asynchrone APIs mit FastAPI erstellen und testen. Ob es darum geht, Dateien zu verarbeiten, externe APIs aufzurufen oder Hintergrundaufgaben zu planen – mit der asynchronen Programmierung können Sie leistungsstarke Anwendungen erstellen, die sich mühelos skalieren lassen.

Bereit, Ihr nächstes FastAPI-Projekt zu erstellen? Fangen wir an!

Danke fürs Lesen...
Viel Spaß beim Codieren!

Das obige ist der detaillierte Inhalt vonSteigern Sie Ihre API-Leistung mit asynchroner Programmierung in 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
So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu findenSo verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu findenMar 05, 2025 am 09:58 AM

Dieses Tutorial zeigt, wie man Python verwendet, um das statistische Konzept des Zipf -Gesetzes zu verarbeiten, und zeigt die Effizienz des Lesens und Sortierens großer Textdateien von Python bei der Bearbeitung des Gesetzes. Möglicherweise fragen Sie sich, was der Begriff ZiPF -Verteilung bedeutet. Um diesen Begriff zu verstehen, müssen wir zunächst das Zipf -Gesetz definieren. Mach dir keine Sorgen, ich werde versuchen, die Anweisungen zu vereinfachen. Zipf -Gesetz Das Zipf -Gesetz bedeutet einfach: In einem großen natürlichen Sprachkorpus erscheinen die am häufigsten vorkommenden Wörter ungefähr doppelt so häufig wie die zweiten häufigen Wörter, dreimal wie die dritten häufigen Wörter, viermal wie die vierten häufigen Wörter und so weiter. Schauen wir uns ein Beispiel an. Wenn Sie sich den Brown Corpus in amerikanischem Englisch ansehen, werden Sie feststellen, dass das häufigste Wort "Th ist

Wie benutze ich eine schöne Suppe, um HTML zu analysieren?Wie benutze ich eine schöne Suppe, um HTML zu analysieren?Mar 10, 2025 pm 06:54 PM

In diesem Artikel wird erklärt, wie man schöne Suppe, eine Python -Bibliothek, verwendet, um HTML zu analysieren. Es beschreibt gemeinsame Methoden wie find (), find_all (), select () und get_text () für die Datenextraktion, die Behandlung verschiedener HTML -Strukturen und -Anternativen (SEL)

Bildfilterung in PythonBildfilterung in PythonMar 03, 2025 am 09:44 AM

Der Umgang mit lauten Bildern ist ein häufiges Problem, insbesondere bei Mobiltelefonen oder mit geringen Auflösungskamera-Fotos. In diesem Tutorial wird die Bildfilterungstechniken in Python unter Verwendung von OpenCV untersucht, um dieses Problem anzugehen. Bildfilterung: Ein leistungsfähiges Werkzeug Bildfilter

Wie man mit PDF -Dokumenten mit Python arbeitetWie man mit PDF -Dokumenten mit Python arbeitetMar 02, 2025 am 09:54 AM

PDF-Dateien sind für ihre plattformübergreifende Kompatibilität beliebt, wobei Inhalte und Layout für Betriebssysteme, Lesegeräte und Software konsistent sind. Im Gegensatz zu Python Processing -Klartextdateien sind PDF -Dateien jedoch binäre Dateien mit komplexeren Strukturen und enthalten Elemente wie Schriftarten, Farben und Bilder. Glücklicherweise ist es nicht schwierig, PDF -Dateien mit Pythons externen Modulen zu verarbeiten. In diesem Artikel wird das PYPDF2 -Modul verwendet, um zu demonstrieren, wie Sie eine PDF -Datei öffnen, eine Seite ausdrucken und Text extrahieren. Die Erstellung und Bearbeitung von PDF -Dateien finden Sie in einem weiteren Tutorial von mir. Vorbereitung Der Kern liegt in der Verwendung von externem Modul PYPDF2. Installieren Sie es zunächst mit PIP: pip ist p

Wie kann man mit Redis in Django -Anwendungen zwischenstrichenWie kann man mit Redis in Django -Anwendungen zwischenstrichenMar 02, 2025 am 10:10 AM

Dieses Tutorial zeigt, wie man Redis Caching nutzt, um die Leistung von Python -Anwendungen zu steigern, insbesondere innerhalb eines Django -Frameworks. Wir werden Redis -Installation, Django -Konfiguration und Leistungsvergleiche abdecken, um den Vorteil hervorzuheben

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?Mar 10, 2025 pm 06:52 PM

Dieser Artikel vergleicht TensorFlow und Pytorch für Deep Learning. Es beschreibt die beteiligten Schritte: Datenvorbereitung, Modellbildung, Schulung, Bewertung und Bereitstellung. Wichtige Unterschiede zwischen den Frameworks, insbesondere bezüglich des rechnerischen Graps

Einführung in die parallele und gleichzeitige Programmierung in PythonEinführung in die parallele und gleichzeitige Programmierung in PythonMar 03, 2025 am 10:32 AM

Python, ein Favorit für Datenwissenschaft und Verarbeitung, bietet ein reichhaltiges Ökosystem für Hochleistungs-Computing. Die parallele Programmierung in Python stellt jedoch einzigartige Herausforderungen dar. Dieses Tutorial untersucht diese Herausforderungen und konzentriert sich auf die globale Interprete

So implementieren Sie Ihre eigene Datenstruktur in PythonSo implementieren Sie Ihre eigene Datenstruktur in PythonMar 03, 2025 am 09:28 AM

Dieses Tutorial zeigt, dass eine benutzerdefinierte Pipeline -Datenstruktur in Python 3 erstellt wird, wobei Klassen und Bedienerüberladungen für verbesserte Funktionen genutzt werden. Die Flexibilität der Pipeline liegt in ihrer Fähigkeit, eine Reihe von Funktionen auf einen Datensatz GE anzuwenden

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung