OpenTelemetry WSGI Middleware¶
This library provides a WSGI middleware that can be used on any WSGI framework (such as Django / Flask) to track requests timing through OpenTelemetry.
Usage (Flask)¶
from flask import Flask
from opentelemetry.ext.wsgi import OpenTelemetryMiddleware
app = Flask(__name__)
app.wsgi_app = OpenTelemetryMiddleware(app.wsgi_app)
@app.route("/")
def hello():
return "Hello!"
if __name__ == "__main__":
app.run(debug=True)
Usage (Django)¶
Modify the application’s wsgi.py
file as shown below.
import os
from opentelemetry.ext.wsgi import OpenTelemetryMiddleware
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings')
application = get_wsgi_application()
application = OpenTelemetryMiddleware(application)
API¶
-
opentelemetry.ext.wsgi.
get_header_from_environ
(environ, header_name)[source]¶ Retrieve a HTTP header value from the PEP3333-conforming WSGI environ.
-
opentelemetry.ext.wsgi.
collect_request_attributes
(environ)[source]¶ Collects HTTP request attributes from the PEP3333-conforming WSGI environ and returns a dictionary to be used as span creation attributes.
-
opentelemetry.ext.wsgi.
add_response_attributes
(span, start_response_status, response_headers)[source]¶ Adds HTTP response attributes to span using the arguments passed to a PEP3333-conforming start_response callable.
-
opentelemetry.ext.wsgi.
get_default_span_name
(environ)[source]¶ Calculates a (generic) span name for an incoming HTTP request based on the PEP3333 conforming WSGI environ.
-
class
opentelemetry.ext.wsgi.
OpenTelemetryMiddleware
(wsgi)[source]¶ Bases:
object
The WSGI application middleware.
This class is a PEP 3333 conforming WSGI middleware that starts and annotates spans for any requests it is invoked with.
- Parameters
wsgi – The WSGI application callable to forward requests to.