fastapi_contrib.tracing package

Submodules

fastapi_contrib.tracing.middlewares module

class fastapi_contrib.tracing.middlewares.OpentracingMiddleware(app: Callable[[MutableMapping[str, Any], Callable[], Awaitable[MutableMapping[str, Any]]], Callable[[MutableMapping[str, Any]], Awaitable[None]]], Awaitable[None]], dispatch: Optional[Callable[[starlette.requests.Request, Callable[[starlette.requests.Request], Awaitable[starlette.responses.Response]]], Awaitable[starlette.responses.Response]]] = None)[source]

Bases: starlette.middleware.base.BaseHTTPMiddleware

static before_request(request: starlette.requests.Request, tracer)[source]

Gather various info about the request and start new span with the data.

async dispatch(request: starlette.requests.Request, call_next: Any)starlette.responses.Response[source]

Store span in some request.state storage using Tracer.scope_manager, using the returned Scope as Context Manager to ensure Span will be cleared and (in this case) Span.finish() be called.

Parameters
  • request – Starlette’s Request object

  • call_next – Next callable Middleware in chain or final view

Returns

Starlette’s Response object

fastapi_contrib.tracing.utils module

fastapi_contrib.tracing.utils.setup_opentracing(app)[source]

Helper function to setup opentracing with Jaeger client during setup. Use during app startup as follows:

app = FastAPI()

@app.on_event('startup')
async def startup():
    setup_opentracing(app)
Parameters

app – app object, instance of FastAPI

Returns

None

Module contents