Zum Hauptinhalt springen
Die WSGI- und ASGI-Standards bieten eine gemeinsame Schicht für die Entwicklung von Web-Frameworks und -Servern in Python. Die meisten beliebten Python-Web-Frameworks halten sich an diese Standards, sodass jede Python-Webanwendung mit jedem Python-Webserver bereitgestellt werden kann.
ASGI-Unterstützung wurde in Version 0.1.4 des AppSignal-Pakets für Python hinzugefügt.
AppSignal unterstützt die Instrumentierung allgemeiner WSGI- und ASGI-Webanwendungen über OpenTelemetry.
AppSignal unterstützt auch beliebte Web-Frameworks direkt, wie z. B. Django, Flask, FastAPI oder Starlette. Wenn Sie ein Web-Framework verwenden, das wir direkt unterstützen, folgen Sie den Anweisungen für dieses Framework anstelle der allgemeinen WSGI/ASGI-Anweisungen auf dieser Seite.

Installation

🐍 Vergessen Sie nicht, zuerst das AppSignal for Python-Paket zu installieren in Ihrer Anwendung.
Installieren Sie zunächst entweder das Paket opentelemetry-instrumentation-wsgi oder opentelemetry-instrumentation-asgi, je nachdem, welche Gateway-Schnittstelle in der Anwendung verwendet wird. Um es zu Ihrem Projekt hinzuzufügen, fügen Sie die folgende Zeile in Ihre requirements.txt-Datei ein:

Einrichtung

Rufen Sie im Einstiegspunkt Ihrer Anwendung (üblicherweise main.py oder app.py) appsignal.start() auf, bevor Ihre Anwendung initialisiert wird, um Ihre Anwendung zu starten:
Importieren Sie dann OpenTelemetryMiddleware aus der entsprechenden OpenTelemetry-Instrumentierung und umhüllen Sie Ihre Anwendung damit:

Routen gruppieren

Eine generische WSGI- oder ASGI-Instrumentierung hat standardmäßig nicht den nötigen Kontext, um zu verstehen, wie das Routing in Ihrer Anwendung strukturiert ist. Daher werden die Performance-Samples, die AppSignal erhält, nicht korrekt gruppiert. Sie müssen dem OpenTelemetry-Span manuell Routing-Informationen hinzufügen. Eine Möglichkeit besteht darin, den semantischen HTTP-Konventionen von OpenTelemetry zu folgen und das Attribut http.route in Ihren Route-Handlern zu setzen:
AppSignal verwendet den Wert dieses Attributs automatisch und nutzt ihn, um Anfragen zusammen mit der Request-Methode zu gruppieren. Beispielsweise erscheint eine GET-Anfrage, die von dieser Methode behandelt wird, als GET /users/:user_id im AppSignal-Performance-Samples-Panel. Wenn Sie Anfragen anders gruppieren möchten (zum Beispiel anhand der Methode oder Klasse, die sie implementiert), können Sie das Attribut appsignal.root_name verwenden:
Mit appsignal.root_name wird die Request-Methode nicht verwendet. Der angegebene Wert (in diesem Fall UserHandlers#show) wird verwendet, um alle von dieser Methode behandelten Anfragen zu gruppieren.