Zum Inhalt

FastAPI Anschluss

Logfirekombiniert benutzerdefinierte und Drittanbieter-Tools von FastAPI mit der logfire.instrument_fastapi() -Methode.

Installiert

Installieren Sie logfire mit fastapi extra:

{{ install_logfire(extras=['fastapi']) }}

Verwendung

Installieren Sie für ein minimales Beispiel Uvicorn um es auszuführen:

pip install uvicorn

Sie können es mit python main.py ausführen:

main.py
import logfire
from fastapi import FastAPI

app = FastAPI()

logfire.configure()
logfire.instrument_fastapi(app)


@app.get("/hello")
async def hello(name: str):
    return {"message": f"hello {name}"}


if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app)

Und dann besuchen http://localhost:8000/helloUPMNAME=world [Bearbeiten | Quelltext bearbeiten] Überprüfen Sie auch das Tagebuch.

OpenTelemetry FastAPI einrichten

Das Paket OpenTelemetry FastAPI Instrumentation von Drittanbietern fügt jeder Anforderung einen Span hinzu, der detaillierte Attribute der HTTP-Anforderung enthält, z. B. die vollständige URL und die Endzeiten des Benutzeragenten, sodass Sie sehen können, wie lange es dauern wird, jede Anforderung zu verarbeiten.

[logfire.instrument_fastapi()][logfire. Logfire. instrument_fastapi] Standardmäßig können Sie diesen Test deaktivieren, indem Sie use_opentelemetry_instrumentation=False übergeben.

logfire.instrument_fastapi() akzeptiert auch beliebige zusätzliche Schlüsselwortargumente und gibt sie an die OpenTelemetry FastAPIInstrumentor.instrument_app()-Methode weiter, siehe deren Dokumentation für weitere Details.

Logfire-Plug-In: Protokollieren von Endpunktparametern und Authentifizierungsfehlern

logfire.instrument_fastapi() gibt für jede Anforderung einen Span namens FastAPI 参数 aus, der die Zeitdauer anzeigt, die FastAPI benötigt, um die Parameter der Endpunktfunktion in der Anforderung zu parsen und zu validieren und Abhängigkeiten zu lösen, und standardmäßig auch die folgenden Attribute enthält:

  • values: Ordnet die Argumentnamen der Endpunktfunktion einem Wörterbuch der analysierten und überprüften Werte zu.

  • errors: Liste der Überprüfungsfehler für alle ungültigen Eingaben.

Sie können diese Funktion anpassen, indem Sie die request_attributes_mapper-Funktion an instrument_fastapi übergeben, so dass sie mit dem Request-oder WebSocket-Objekt zusammen mit dem Standardattributwörterbuch aufgerufen wird Es sollte ein neues Attributwörterbuch zurückgeben oder None zurückgeben, um die Span auf "debug" zu setzen, so dass es standardmäßig verborgen ist z.B.:

import logfire

app = ...


def request_attributes_mapper(request, attributes):
    if attributes["errors"]:
        # Only log validation errors, not valid arguments
        return {
            "errors": attributes["errors"],
            "my_custom_attribute": ...,
        }
    else:
        # Don't log anything for valid requests
        return None


logfire.configure()
logfire.instrument_fastapi(app, request_attributes_mapper=request_attributes_mapper)

!!! Achtung! [request_attributes_mapper][logfire.Logfire.instrument_fastapi(request_attributes_mapper)] Funktionen können nicht geändert werden 值 bzw.错误 Der Inhalt, aber es kann sicher sein, sie durch neue Werte zu ersetzen.

URL vom Test entfernen

Um das Nachverfolgen bestimmter URLs zu vermeiden, können Sie eine durch Kommas getrennte Liste regulärer Ausdrücke angeben, die mit der vollständigen Anforderungs-URL übereinstimmen, die an Folgendes übergeben werden kann:

  • instrument_fastapi wie [excluded_urls ][logfire.Logfire.instrument_fastapi(excluded_urls)], zum Beispiel:logfire.instrument_fastapi(app, excluded_urls='/health')

  • Die Umgebungsvariable OTEL_PYTHON_FASTAPI_EXCLUDED_URLS.

  • Umgebungsvariable OTEL_PYTHON_EXCLUDED_URLS(dies gilt auch für andere Tests).

Anforderung-und Antwort-Header erfassen


本文总阅读量次