Skip to main content
De WSGI- en ASGI-standaarden bieden een gemeenschappelijke laag voor de ontwikkeling van webframeworks en -servers in Python. De meeste populaire Python-webframeworks volgen deze standaarden, waardoor elke Python-webapplicatie met elke Python-webserver kan worden gedeployed.
ASGI-ondersteuning is toegevoegd in versie 0.1.4 van het AppSignal voor Python-pakket.
AppSignal ondersteunt instrumentatie voor generieke WSGI- en ASGI-webapplicaties via OpenTelemetry.
AppSignal ondersteunt ook populaire webframeworks rechtstreeks, zoals Django, Flask, FastAPI of Starlette. Als u een webframework gebruikt dat we rechtstreeks ondersteunen, volgt u de instructies voor dat framework in plaats van de generieke WSGI/ASGI-instructies op deze pagina.

Installatie

🐍 Vergeet niet om eerst het AppSignal for Python-package te installeren in uw applicatie.
Installeer eerst het opentelemetry-instrumentation-wsgi- of het opentelemetry-instrumentation-asgi-pakket, afhankelijk van de gateway interface die in de applicatie wordt gebruikt. Om het aan uw project toe te voegen, voegt u de volgende regel toe aan uw requirements.txt-bestand:

Setup

Roep in het entry point van uw applicatie (meestal genaamd main.py of app.py), voordat uw applicatie wordt geïnitialiseerd, appsignal.start() aan om uw applicatie te starten:
Importeer vervolgens OpenTelemetryMiddleware uit de bijbehorende OpenTelemetry-instrumentatie en omhul uw applicatie hiermee:

Routes groeperen

Standaard heeft een generieke WSGI- of ASGI-instrumentatie niet de benodigde context om te begrijpen hoe routing is gestructureerd in uw applicatie. Daardoor worden de performance-samples die AppSignal ontvangt niet correct gegroepeerd. U moet routinginformatie handmatig toevoegen aan de OpenTelemetry-span. Een manier om dit te doen is door de HTTP semantic conventions van OpenTelemetry te volgen en het http.route-attribuut in te stellen in uw route handlers:
AppSignal gebruikt automatisch de waarde van dit attribuut om requests te groeperen, samen met de request-methode. Bijvoorbeeld, een GET-request die door deze methode wordt afgehandeld, verschijnt als GET /users/:user_id in het AppSignal performance samples-paneel. Als u liever requests op een andere manier groepeert (bijvoorbeeld door te verwijzen naar de methode of class die ze implementeert), kunt u het appsignal.root_name-attribuut gebruiken:
Bij gebruik van appsignal.root_name wordt de request-methode niet gebruikt. De opgegeven waarde (in dit geval UserHandlers#show) wordt gebruikt om alle requests die door deze methode worden afgehandeld te groeperen.